Django1.x和Django2.x 版本之间的差别(持续更新......)

路由层

1.X用的是url
2.X、3.X用的是path

url第一个参数是一个正则表达式
而path第一个参数不支持正则表达式 写什么就匹配什么
如果你觉得path不好用 2.x、3.x给你提供了一个跟url一样的功能
re_path 等价于1.x里面的url功能

虽然path不支持正则表达式 但是它给你提供了五种默认的转换器
str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
int,匹配正整数,包含0。
slug,匹配字母、数字以及横杠、下划线组成的字符串。
uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
path,匹配任何非空字符串,包含了路径分隔符(/)(不能用?)

path('login/<int:year>/',login)

除了默认的五种转换器之外 还支持你自定义转换器
class MonthConverter:
regex='d{2}' # 属性名必须为regex

def to_python(self, value):
return int(value)

def to_url(self, value):
return value # 匹配的regex是两个数字,返回的结果也必须是两个数字

 

Registering custom path converters      官方文档

模型层

外键字段

django1.x是级联更新,级联删除

django2.x以上需要手动同步

原文地址:https://www.cnblogs.com/csic716/p/12158457.html