路由層
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以上需要手動同步