urlpatterns
變量的語法urlpatterns
應該是path()
和/或re_path()
實例的Python列表。html
ROOT_URLCONF
設置的值,可是若是傳入的HttpRequest
對象具備urlconf
屬性(由中間件設置)那麼ROOT_URLCONF
的設置將被其替換。urlpatterns
。 它應該是django.urls.path()
或者django.urls.re_path()
實例的Python列表。
path 是新的方法,re_path方法和原來的url用法一致,使用正則表達式
代碼:
from django.urls import path
from . import views
urlpatterns = [
path('articles/2003/', views.special_case_2003),
path('articles/<int:year>/', views.year_archive),
path('articles/<int:year>/<int:month>/', views.month_archive),
path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
]
變化:python
不在使用url函數,轉而使用path轉換器
正則表達式
直接在url中表示捕獲的參數類型,django
提取的參數會進行類型轉換,不像正則表達式中都是捕獲字符串函數
不以斜槓結尾則匹配不到ui
<int:name>
來捕獲一個整形參數。 若是沒有包含轉換器, 那麼除了/
字符外, 會匹配任意字符串。/articles/2005/03/
的請求將與列表中的第三個條目匹配。 Django會調用函數views.month_archive(request, year=2005, month=3)
。/articles/2003
不會匹配到任何一個模式,由於每一個模式都要求URL以斜槓結尾。
轉換器類型如下路徑轉換器默承認用:url
str
- 匹配除了路徑分隔符'/'
的任意非空字符串。 若是表達式中沒有包含轉換器,那麼這將是默認行爲。int
- 匹配0或任意正整數。 並做爲 int 返回。slug
- 匹配任意的黏接字符串(slug string),這些黏接字符串是ASCII的字母或數字,詞與詞之間由連字符或下劃線黏接組成。 例如, building-your-1st-django-site
。uuid
- 匹配一個格式化的 UUID. 爲了防止多個URL映射到同一頁面,必須包含多個破折號(dash),同時字母必須小寫。 例如, 075194d3-6885-417e-a8a8-6c931e272f00
. 返回一個 UUID
實例。path
- 匹配包含路徑分隔符 '/'
在內的任意非空字符串。 相對於str
,這容許你匹配一個完整的URL路徑,而不單單是URL路徑的一部分。