當我們啟動乙個django專案後,想要通過瀏覽器訪問到django專案中的資源
就需要在django中的urls專案中進行路由配置
urlpatterns =[這樣就可以在瀏覽器訪問到jango中的函式url(r
'^admin/
', admin.site.urls),
url(r
'^test/
', test1),
]
然而在這個urls檔案開頭注釋中,就已經告訴了我們url後面可以跟以下三種
function views我們又了解到,只有當一條路由最後匹配到乙個函式之後,這條路由才算結束views
2. add a url to urlpatterns: url(r'
^$', views.home, name='
home')
class-based views
home
2. add a url to urlpatterns: url(r'
^$', home.as_view(), name='
home')
including another urlconf
1. import the include() function: from django.conf.urls import
url, include
2. add a url to urlpatterns: url(r'
^blog/
', include('
blog.urls
'))
上面的第一種就是直接跟函式,表示一條路由的終止
第二種跟的是類,呼叫了as_view()的方法,我們可以看一下as_view方法幫我們實現了什麼
函式加括號優先順序最高,會優先執行
首先,走了as_view的類繫結方法
然後在as_view中生成了乙個閉包函式view,在該函式中把類例項化長生物件,並把dispatch方法的結果返出來
然後as_view的返回值其實這個view函式物件,所以這種方法的本質還是跟的函式
寫法: 通過include把以及路由分發下去
通過以上的分析我們知道,include幫我們幹的事情其實是匯入字串寫的模組,並以元組的形式返回
這樣我們大致可以理解為,他把我們的(模組物件,none,none) 轉換成了(列表,none,none)
確實就是如此,這也是我們路由分發的本質
urlpatterns =[注意: 只有當路由匹配後面跟的是函式物件時,這條路由才算結束,否則如果是(,none,none)這種,接著往下分,往下找。url(r
'^test/
', ([ #
這裡是分一級路由
url(r'
^test_1
', ([ #
這是分的二級路由,我們可以通過這種方式無限往下分
url(r'
^test_1_1
', test_1_1),
url(r
'^test_1_2
', test_1_2)
],none, none)),
url(r
'^test_2
', test_2),
],none, none)),
]
Django 路由分發
django 路由分發 當乙個url請求過來之後 1 先到專案主目錄下的urls內。一級路由 主目錄urls內引入include from django.conf.urls import url,include urlpatterns url r cmdb include url r monitor...
Django路由分發
1.路由匹配,urls.py中 url r testadd views.testadd 匹配規則 從上到下只要正規表示式匹配成功,就不會往下匹配了 get請求的傳參方式?無名分組 url r test d views.test 會把括號中匹配的數字當成位置引數傳給檢視函式 有名分組 url r te...
Django的路由系統01 路由分發
範例 from django.conf.urls import url from django.contrib import admin urlpatterns url r admin admin.site.urls url r publisher list views.publist.as vie...