路由層
區別
區別 | django1.x | django2.x or 3.x |
---|---|---|
方法 | url方法from django.conf.urls import url |
path方法from django.urls import path |
url參數 | 第一個參數支持正則表達式 | 第一個參數不支持正則表達式 |
額外補充
關於3.x版本不支持正則表達式的問題
- re_path
如果習慣了使用正則表達式,3.x版本提供了另一個方法re_path
,re_path
就等價於1.x版本中的url
from django.contrib import admin
from django.urls import path,re_path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('index',views.index),
re_path('^index/\d+',views.index),
]
- 轉換器
雖然path不支持正則,但是內部支持五種轉換器
path('index/<int:id>/',views.index)
# 將第二個路由中的內容轉成整形然后以關鍵字參數的形式傳遞給后面的視圖函數
def index(request,id):
print(id,type(id))
return HttpResponse('index')
五種轉換器介紹
- str,匹配除了路徑分隔符(/)之外的非空字符串,這是默認的形式
- int,匹配正整數,包含0。
- slug,匹配字母、數字以及橫杠、下划線組成的字符串。
- uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
- path,匹配任何非空字符串,包含了路徑分隔符(/)(不能用?)
- 自定義轉換器
待定
模型層
-
1.x版本外鍵默認是級聯更新和級聯刪除的
-
2.x 3.x版本需要手動配置參數
models.ForeignKey(to='Publish')
models.ForeignKey(to='Publish',on_delete=models.CASCADE...)