Django框架版本區別
阿新 • • 發佈:2022-03-01
目錄
一:django版本區別
django中1.x與2.x,3.x之間路由的區別
1.django1.X路由層使用的是url方法
而在django2.Xhe3.X版本中路由層使用的是path方法 1.X第一個引數正則表示式 url() 2.X和3.X第一個引數不支援正則表示式,寫什麼就匹配什麼,100%精準匹配 path() 如果想要使用正則,那麼2.X與3.X也有相應的方法 from django.urls import path,re_path re_path # 等價於 1.X裡面的url方法 re_path(r'^index/',index), url 2.x和3.x不推薦使用 但是可以用 from django.conf.urls import url url(r'^login/',login)
2.雖然path不支援正則 但是它的內部支援五種轉換器
# 將第二個路由裡面的內容先轉成整型然後以關鍵字的形式傳遞給後面的檢視函式
path('index/<int:id>/',views.index)
def index(request,id): # id當作關鍵字進來
print(id,type(id))
return HttpResponse('index')
3.五種轉換器
str,匹配除了路徑分隔符(/)之外的非空字串,這是預設的形式 int,匹配正整數,包含0。 slug,匹配字母、數字以及橫槓、下劃線組成的字串。 uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。 path,匹配任何非空字串,包含了路徑分隔符(/)(不能用?)
4.除了有預設的五個轉換器之外 還支援自定義轉換器(瞭解)
class MonthConverter: # 屬性名必須為regex regex='\d{2}' # 匹配兩個數字 def to_python(self, value): return int(value) # int型別 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'), ]
5.模型層裡面1.X外來鍵預設都是級聯更新刪除的
但是到了2.X和3.X中需要你自己手動配置引數
models.ForeignKey(to='Publish')
models.ForeignKey(to='Publish',on_delete=models.CASCADE)
2.x和3.x配置外來鍵級聯更新刪除
on_delete=models.CASCADE
q