1.基本配置
from django.conf.urls import urlfrom . import viewsurlpatterns = [url(r'^articles/2003/$', views.special_case_2003),url(r'^articles/([0-9]{4})/$', views.year_archive),url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail), ]
2.分組命名匹配
在Python的正則表達式中,分組命名正則表達式組的語法是(?P<name>pattern)
,其中name
是組的名稱,pattern
是要匹配的模式。
實例
#url.pyurl(r'^date/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$',views.date) #views.py def date(request,year,month):print("year:",year)print("month:",month)return HttpResponse('OJBK')
3.反向解析URL(本質上就是給url匹配模式起別名,然后用過別名拿到具體的URL路徑)
???
??? 1. 怎么起別名?
???? 在url匹配模式中,定義name="別名"
??? 2. 如何使用?
???? ? 1. 在模板語言里面使用:?{% url "別名" %}? --> 得到具體的URL路徑
????
???? 2. 在視圖中如何使用:?from django.urls import reverse
???? ?reverse("別名")? --> 得到具體的URL路徑
????
?? ?3. 如何傳參數?
???? 1. 模板語言中:{% url "別名" 2018 "nb" %}
???? ?
???? 2. 視圖函數中
???? ?傳位置參數:reverse("別名", args=(2018, "nb"))
????
????? 傳關鍵字參數:reverse("別名" kwargs={"year": 2018, "title": "nb"})
???4. namespace
???? 為了防止不同的app下面的url匹配模式有重復的別名
????
???