django 学习笔记2

创建项目BookManager: django-admin startproject BookManager

settings.py : 是项目的整体配置文件

urls.py : 是项目的URL配置文件.

manage.py : 是项目运行的入口, 指定配置文件路径

创建应用Book: python manage.py startapp Book

admin.py : 是后台的站点管理注册文件

migrations : 是做模型迁移的


新增的应用需要到setting.py中去注册

运行服务:python manage.py runserver 172.16.21.25:8001

模型属性值不允许使用连续的下划线,因为Django的查询语法就是连续的下划线

编写完模型类之后,生成迁移文件:python manage.py makemigrations
执行迁移文件生成表:python manage.py migrate

创建外键:book_people = models.ForeignKey('BookInfo', on_delete=models.CASCADE)

 

 =========字段

AutoField:自动增长的IntegerField,通常不用指定
不指定时Django会自动创建属性名为id的自动增长属性
BooleanField:布尔字段,值为True或False
NullBooleanField:支持Null、 True、 False三种值
CharField(max_length=字符长度):字符串
 参数max_length表示最大字符个数
TextField:大文本字段,一般超过4000个字符时使用
IntegerField:整数
DecimalField(max_digits=None,decimal_places=None):可以指定精度的十进制浮点数
 参数max_digits表示总位数
 参数decimal_places表示小数位数
FloatField:浮点数
DateField[auto_now=False, auto_now_add=False]):日期
 参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false
 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false
 参数auto_now_add和auto_now是相互排斥的,组合将会发生错误
TimeField:时间,参数同DateField
DateTimeField:日期时间,参数同DateField
FileField:上传文件字段
ImageField:继承于FileField,对上传的内容进行校验,确保是有效的图片

============

 在setting.py文件里包含着整个项目的总体配置。可以在里面设置本地化语言和时间。

 

 创建管理员账户: python manage.py createsuperuser

管理后台地址:http://127.0.0.1:8000/admin 即可(记得后缀加admin

若想在界面上管理模型,则需要在app的admin.py中注册模型:admin.site.register(BookInfo)

Django后台管理是可以自定义管理页面 :

 

 在setting.py 中配置数据库:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'NAME': 'Bookdb', # 数据库名称
'HOST': 'localhost', # 数据库主机
'PORT': '3306', # 数据库端口
'USER': 'root', # 数据库用户名
'PASSWORD': 'mysql', # 数据库密码
}
视图函数必须带一个参数request

 

 转换器是什么呢?简单来说就是能够路由提取的参数

urlpatterns = [
path('articles/2003/', views.special_case_2003),
path('articles/<int:year>/', views.year_archive),
path('articles/<int:year>/<int:month>/',
views.month_archive),
path('articles/<int:year>/<int:month>/<slug:slug>/',
views.article_detail),
]

/articles/2003 不会匹配任何项,因为每一个匹配需要在最后加一个斜杠

 若想在管理员界面管理模型,则需要先注册模型,如

from .models import JupyterResourceRecord #TODO
admin.site.register(JupyterResourceRecord)

 视图集中的action与http请求的对应关系:

 

启动工程
django-admin startproject myproject
创建应用
django-admin startapp boards
在settings.py的INSTALLED_APPS中注册应用
连数据库:python manage.py dbshell

 ============

  • vlaues -
    • 单条记录 - <class 'dict'>
    • 多条记录 - <class 'django.db.models.query.QuerySet'>
  • vlaues_list -
    • 单条记录 - <class 'tuple'>
    • 多条记录 - <class 'django.db.models.query.QuerySet'>

 

ipList = EmployeeIP.objects.values("IP").first()
print(type(ipList))
# <class 'dict'>
print(ipList)
# {'IP': '192.168.1.41'}
ipList = EmployeeIP.objects.values_list("IP")[0:2]
print(type(ipList))
# <class 'django.db.models.query.QuerySet'>
print(ipList)
# [('192.168.1.41',), ('192.168.1.44',)]

 获取指定字段:ret = EvaluationAppl.objects.filter(team_id=1301).values("submit_id","submit_id","score")

 解决 django 中 mysql gone away 的问题:from django.db import close_old_connections

参考链接:https://zhaojames0707.github.io/post/django_mysql_gone_away/

 

action=“.”用于显示当前表单的提交地址,这里表示的是当前地址,即调用此模板的视图函数所对应的 URL 。

{% csrf_token %}在表单中是必不可少的,不写在这个位置也行,只要在<form>语句里面即可

但对于 MIDDLEW:成E 读者或许没有关注,现在就看看它,其中有一个参数 django.middleware.csrf.CsrfViewMiddleware,有了这个中间件,就能保证
叫django 免受csrf攻击了。如果前端通过 POST 方式提交数据,就会被禁止,而 POST 数据又是必不可少的,解决方法之一就是在表单中使用{% csrf_token %},与表单内容一同被提交

在 INSTALLED_APPS 的列表中发现 django.contrib.auth 应用就是 Django 默认(内置)的用户权限管理应用

django。contrib.auth应用创建的表以auth作为前缀,其中auth_user里是用户表

可以用is_anonymous()来区分登录用户和未登录用户,

在模版中可以通过 request.user 得到用户对象 , user.is_authenticated 则是返回用户登录的状态,已
经登录返回 True,否则返回 False



 

posted on 2020-06-11 19:04  我和你并没有不同  阅读(130)  评论(0编辑  收藏  举报