1.路由层
1.0+使用的是url
2.0+或3.0+使用的是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 官方文档
2.模型层
Django1.x是级联更新,级联删除
Django2.x以上需要手动同步