Django版本區別
阿新 • • 發佈:2021-06-11
Django版本區別
""" 1、django1.x路由層使用的是url方法 django2.x和3.x版本中路由層使用的是path方法 url() 第一個引數支援正則 path() 第一個引數是不支援正則的 寫什麼就匹配什麼 如果你不習慣使用path 那麼也提供給你了另外一個方法 re_path from django.urls import path,re_path urlpatterns = [ path('admin/', admin.site.urls), re_path(r'index/',index) ] 2.x和3.x裡面的re_path就等價於1.x裡面的url 2、雖然path不支援正則 但是它的內部支援五種轉換器 path('index/<int:id>/',index) # 將第二個路由裡面的內容先轉成整型 然後以關鍵字的形式傳遞給後面的檢視函式 詳情參考部落格:https://www.cnblogs.com/xiaoyuanqujing/articles/11642628.html str,匹配除了路徑分隔符(/)之外的非空字串,這是預設的形式 int,匹配正整數,包含0。 slug,匹配字母、數字以及橫槓、下劃線組成的字串。 uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8- 6c931e272f00。 path,匹配任何非空字串,包含了路徑分隔符(/)(不能用?) 3、除了有預設的五個轉換器之外 還支援自定義轉換器(瞭解) # 自定義 class MonthConverter: regex='\d{2}' # 屬性名必須為regex def to_python(self, value): return int(value) def to_url(self, value): return value # 匹配的regex是兩個數字,返回的結果也必須是兩個數字 # 使用 from django.urls import path,register_converter from app01.path_converts import MonthConverter # 先註冊轉換器 register_converter(MonthConverter,'mon') from app01 import views urlpatterns = [ path('articles/<int:year>/<mon:month>/<slug:other>/', views.article_detail, name='aaa'), ] 4、模型層裡面1.x外來鍵預設都是級聯更新刪除的 但是到了2.x和3.x中需要你自己手動配置引數 models.ForeignKey(to='Publish') models.ForeignKey(to='Publish',ON_delete=models.CASCADE)"""