path定義
path函數的定義為:
path(route,view,name=None,kwargs=None)
可以查看官方文檔 → 官方文檔,下面是取自官方文檔關於path的參數
函數 path() 具有四個參數,兩個必須參數:route 和 view,兩個可選參數:kwargs 和 name。
path() 參數: route
route 是一個匹配 URL 的准則(類似正則表達式)。當 Django 響應一個請求時,它會從 urlpatterns 的第一項開始,按順序依次匹配列表中的項,直到找到匹配的項。
這些准則不會匹配 GET 和 POST 參數或域名。例如,URLconf 在處理請求 https://www.example.com/myapp/ 時,它會嘗試匹配 myapp/ 。處理請求 https://www.example.com/myapp/?page=3 時,也只會嘗試匹配 myapp/。
path() 參數: view
當 Django 找到了一個匹配的准則,就會調用這個特定的視圖函數,並傳入一個 HttpRequest 對象作為第一個參數,被“捕獲”的參數以關鍵字參數的形式傳入。
path() 參數: kwargs
任意個關鍵字參數可以作為一個字典傳遞給目標視圖函數。
path() 參數: name
為你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。這個有用的特性允許你只改一個文件就能全局地修改某個 URL 模式。
route幾種常用的類型
- str:非空的字符串類型。默認的轉換器。但是不能包含斜杠。
- int:匹配任意的零或者正數的整形。到視圖函數中就是一個int類型。
- slug:由英文中的橫杠-,或者下划線_連接英文字符或者數字而成的字符串。
- uuid:匹配uuid字符串。
- path:匹配非空的英文字符串,可以包含斜杠。
re_path定義:
它和path是相同的,但是它的第一個參數傳遞的是一個
正則表達式
#和path相同需要導入re_path
from django.urls import path, re_path
from . import views
urlpatterns = [
path('canshu/2003/', views.special_case_2003),
#使用r包裹正則表達式,它是一個原生字符串,可以避免python這一層面轉移(不是非要不可)
re_path(r'canshu/(?P<year>[0-9]{4})/', views.year_archive),
]