django2.0中url的路由機制
路由是關聯url及其處理函式關係的過程。django的url路由配置在settings.py檔案中root_urlconf變數指定全域性路由檔名稱。
django的路由都寫在urls.py檔案中的urlpatterns列表中,由path()或re_path()作為元素組成。
django的url路由流程:
1 django查詢全域性urlpatterns變數(urls.py)
2 按照先後順序,對url逐一匹配urlpatterns每個元素
3 找到第乙個匹配時停止查詢,根據匹配結果執行對應的處理函式。
4 如果沒有找到匹配或出現異常,django進行錯誤處理
注意:django的路由不考慮http請求方式,僅根據url進行路由,即,只要url相同,無論post、get等哪種請求方式都指向同乙個操作函式。
urlpatterns中的path()處理字串路由,re_path處理正規表示式路由。
其格式:
urlpatterns=[
path(route,views.函式名,向處理函式提供的額外引數,以字典形式表示,該url模式的別名),
re_path(正規表示式,view.對應的處理函式)
其中正規表示式可以看做字串的模式。
django支援三種表達route:
1、 精確字串格式:articles/2017/
乙個精確url匹配乙個操作函式;最簡單的形式,適合對靜態url的響應;url字串不以「/」開頭,但要以「/」結尾
2、 django的轉換格式:《型別:變數名》,articles//
是乙個url模版,匹配url同時在其中獲得一批變數作為引數;是一種常用形式,目的是通過url進行引數獲取和傳遞
轉換格式型別
說明str
匹配除分隔符(/)外的非空字元,預設型別等價於
int匹配0和正整數
slug
匹配字母、數字、橫槓、下劃線組成的字串,str的子集
uuid
匹配格式化的uuid,如075194d3-6885-417e-a8a8-6c931e272f00
path
匹配任何非空字串,包括路徑分隔符,是全集
3、 正規表示式格式:articles/(?p[0-9])/
借助正規表示式豐富語法表達一類url(而不是乙個);可以通過<>提取變數作為處理函式的引數,高階用法;使用該方法時,前面不能使用path()函式,必須使用re_path()函式;表達的全部是str格式,不能是其他型別。
兩種形式:不提取引數,比如re_path(articles/([0-9]/,表示四位數字,每乙個數字都是0到9的任意數字;提取引數,命名形式(?ppattern),比如re_path(articles/(?p[0-9])/,將正規表示式提取的四位數字,每乙個數字都是0到9的任意數字命名為year,
當檢視函式路徑較多時,可以使用include()用法進行去重:
複製**
urlpatterns=[
path(『-/history/』,views.history),
path(『-/edit/』,views.edit),
] 複製**
等價於:
複製**
urlpatterns = [
path(『-/』,include([
path(『history/』,views.history),
path(『edit/』,views.edit),
]
複製**
當**功能較多時可以在該功能資料夾裡建乙個urls.py檔案,將該功能模組下的url全部寫在該檔案裡。但是要在全域性的urls.py中使用include方法實現url對映分發。
複製**
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('ant_test/',include('ant_test.urls'))
]
複製**
在論壇模組下的urls.py檔案這樣寫:
from django.urls import path
urlpatterns = [
path('news/',views.news),
在views.py中寫對應的news函式即可。
django2.0版本中path(route,views.對應處理函式)等價於低版本的url(r』^route/$』,views.對應處理函式) Django2 0以上版本 URL配置
預設情況下,django內建下面的路徑轉換器 其實就是寫乙個類,幷包含下面的成員和屬性 例如,新建乙個convertpath.py檔案,與urlconf同目錄,寫個下面的類 class fourdigityearconverter regex 0 9 defto python self,value ...
Django2 0 路由配置
url配置就像是django所支撐 的目錄,它的本質是url模式以及要為該url模式呼叫的檢視函式之間的對映表。url需要在urls.py進行配置,與其對應的檢視函式寫在views.py檔案中。url的配置寫在urlpatterns列表的path方法中,對於path的功能,下面一一講解。轉化器的型別...
django2 0實現簡單的路由分發功能
本博文源於django基礎,關於檢視的操作。路由分發的本質在於解耦!因此完成本實驗也是非常簡單愉快的。實驗步驟如下 這裡假設在專案test01下完成本實驗!templates資料夾建立和os.path也有做 在settings.py裡裝配兩者的應用安裝 在test01 urls.py下作路由分發 在...