Django 2.0 变更内容(不按版本敲着实是有点坑o(╥﹏╥)o)
外键
Django 1.9在创建models.ForeignKey
外键时,可写成
1 | topic = models.ForeignKey(Topic) |
Django 2.0需要多传一个字段on_delete
,且可给定默认值models.CASCADE
所以上述可写为:
1 | topic = models.ForeignKey(Topic,on_delete=models.CASCADE) |
指定app_name
Django 1.9在映射URL时,工程的urls.py可写成:
1 | from django.contrib import admin |
应用的urls.py可写成:
1 | """定义learning_logs的URL模式""" |
该写法在Django 2.0中会出现报错:
1 | 'Specifying a namespace in include() without providing an app_name ' |
意思是缺少了app_name,所以需要指定app_name,我的做法是在应用的urls.py文件中指定app_name,也就是工程的urls.py保持不变,应用的urls.py增加app_name指定:
1 | """定义learning_logs的URL模式""" |
映射URL
对于django.urls.path()函数,允许有简单的表示方法:
1 | url(r’^articles/(?P[0-9]{4})/$’, views.year_archive), |
可以写成:
1 | path(‘articles//‘, views.year_archive), |