1、導入模塊
from django.urls import path, include, re_path
路由系統過程:
1)網頁輸入網址,提交請求
2)找到settings.py中的Root_URLCONF, 進入路由系統中按照順序找匹配的
3)找到了,就調用與該匹配的url映射的視圖函數,並傳遞參數request以及其它 HttpRequest對象request
4)視圖函數處理,返回HttpResponse給瀏覽器展示(瀏覽器解析網頁)
5)沒有找到匹配的url就報錯
2、一般靜態配置 article/2017/
path(route,views.函數名,函數的參數,該url模式的別名)
urlpatterns = [
path('admin/', admin.site.urls),
path('hello/',views.hello), # 前面版本中表示空的是 '^$',新版本直接 '' 末尾/一定要,hello不行,一定是hello/
path('time/',views.current_time),
]
3、動態配置 <類型:變量名>,articles/<int:year>/
path('article/<int:year>/',views.book)
變量名作為參數傳遞給視圖函數;類型有int, str,slug, Uuid, path
4、正則匹配 re_path() (?p<year>[0-9]{4})
使用re_path()函數;表達的全部是str格式,不能是其他類型。
兩種形式:不提取參數,比如re_path(articles/([0-9]{4}/,表示四位數字,每一個數字都是0到9的任意數字;提取參數,命名形式(?P<name>pattern),比如re_path(articles/(?P<year>[0-9]{4})/,將正則表達式提取的四位數字,每一個數字都是0到9的任意數字命名為year,
5、include用法
可以減少重復的匹配,
Urlpatterns = [
path(‘<page_slug>-<page_id>/’,include([
path(‘history/’,views.history),
path(‘edit/’,views.edit),
])]
還可以實現url的映射分發
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('ant_test/',include('ant_test.urls'))
]
ant_test為app名