Django2|Django2 改了什么看 & 复习Django

1.URL改为from django.urls import include, path
以前用url,现在用path
其中,包含4个参数,必须的route、view,非必须的kwargs和name,为url起名可以在任意地方唯一的使用
当包括其它 URL 模式时你应该总是使用 include()admin.site.urls 是唯一例外。
2.URL里再也不用正则表达式了,不再有^&这些东西了,应该是已经打包好了,可以直接用这种方式
3.自己写的中间件,不可不继承任何objects了
目前发现其他中间件继承自from django.utils.deprecation import MiddlewareMixin,所以自己写的中间件也可以这么继承
4.外键models.ForeignKey(Question, on_delete=models.CASCADE),现在必须加on_delete参数
外键关系中,1调用n的一方,可以用one.n_set.all()调用,关键是_set。在模板中不加括号
5.在settings.py中,自定义installed_app要写成'yourapp.apps.YourappConfig',
6.在django.shortcuts 中
get_object_or_404() 相当于objects.get,否则404
get_list_or_404() 相当于objects.filter,否则404
7.去除模板中的链接地址硬编码,可以在urls.py中为url设置name,然后在模板中 {% url %} 标签代替它,如

  • {{ question.question_text }}

  • 这个标签的工作方式是在 polls.urls 模块的 URL 定义中寻具有指定名字的条目。你可以回忆一下,具有名字 'detail' 的 URL 是在如下语句中定义的:
    app_name = 'polls'# 在上面加上命名空间 # the 'name' value as called by the {% url %} template tag path('/', views.detail, name='detail'),

    8.模板中用{{ forloop.counter }}表用{% for %}循环到了第几次,如

    9.F()函数可以用来解决资源更新的竞争, Avoiding race conditions using F()
    1. admin界面可以自己定义,包括label,filter筛选过滤,搜索等
      https://docs.djangoproject.com/zh-hans/2.0/intro/tutorial07/
    2. 【Django2|Django2 改了什么看 & 复习Django】Middleware 的执行顺序。在系统根据WSGI的 environ 构造 WSGIRequest 对象后,Middleware的process_request开始顺序执行,然后匹配URL后,具体view执行前(?),Middleware的process_view开始顺序执行,然后开始处理view,最后Middleware的process_response开始逆序执行

      推荐阅读