Django2 0中URL的路由機制

2021-08-25 05:48:03 字數 2367 閱讀 7504

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下作路由分發 在...