django2 0 路由規則

2022-09-23 04:52:04 字數 2460 閱讀 8107

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.對應處理函式)

路由系統:url

普通url:re_path('^index/',view.index),re_path('^home/',view.home.as_view())

順序傳參:re_path(r'^detail-(\d+)-(\d+).html/',views.detail),這個用*args接收

Django路由

1 django路由的本質是url與url所對應的檢視函式之間的對映表。在請求過來的時候,通過匹配url去執行對應的檢視函式。如圖 2 ur...

Django路由層

url攜帶的第一個引數就是正規表示式 一旦前面匹配到了內容 就不會往下繼續匹配了 而是執行相應的檢視函式 像上方這樣的正規表示式 不管輸入t...

django url路由

1 1建立專案 first pro23 做一個登入頁面的web專案 瀏覽器輸入一個 得到一個web頁面45 使用者 http 127 0 0 1 8001 login 67 1urls py89 10urlpatterns 11 url r admin admin site urls 12url r ...