005 Django2 0的路由層

2022-03-24 00:08:44 字數 3298 閱讀 1660

url配置就像django所支撐的**目錄,它的本質是每條url呼叫的檢視函式的對映表,每乙個請求執行對應的檢視函式。

1、簡單的路由配置 

1

from django.contrib import

admin

2views

3from django.urls import

path, re_path,include4#

56 urlpatterns =[

7 path('

admin/

', admin.site.urls),

00 re_path('^$',views.index)    # 直接寫開頭和結尾兩個匹配字元,代表ip加埠模式

8 re_path(r'

^articles/2003/$

', views.special_case_2003), # 以article開頭和以2003結尾的都可以匹配的到

9 re_path(r'

^articles/([0-9])/$

', views.year_archive), #

對應函式接收時,多乙個引數 year_archive(request,year)

10 re_path(r'

^articles/([0-9])/([0-9])/$

', views.month_archive), # 對應函式接收時,

多兩個引數 month_archive(request,year,month)

注意:若要從url捕獲乙個值,只需要在他周圍放置()。開頭也不需要加/ ,因為每個url都會自動加上。例如^articles,而不是^/articles。每個正規表示式前面的r代表不轉義的意思。告訴python這個字串是原始的,不需要任何轉義。

2、有名分組 

上面的示例中使用簡單的、沒有命名的正規表示式組(通過括號)來捕獲url值,並以位置引數傳遞給檢視。在高階用法中,可以給正規表示式命名。這樣就是以關鍵字引數傳遞給檢視,在python中,命名正規表示式的語法是(?ppattren)

name是組的名稱。pattern是要匹配的模式。

1

#命名分組

2 re_path(r'

^articles/(?p[0-9])/(?p[0-9])/$

', views.month_archive), #

year_archive(request,month=month,year=year) 以關鍵字引數傳遞給檢視,位置可調換。

3、路由分發 

1#分發

2 re_path(r'

^',include('

')),

3 re_path(r'

',include('

')), #

4 re_path(r'

',include('

')), #

4、反向解析 

django專案也有用於嵌入到生產內容中、比如檢視和模版裡的url等。或者重定向等。如果你專案之前設計好了url.,專案完成後或者上線後,老闆要求你改url,後面的檢視和模版也要跟著改,實在麻煩,所以有了反向解析。不再採取硬編碼的url。

1

#反向解析

2 re_path('

^login/$

', views.login, name='

login

'),#

name代表名稱。

3 re_path(r'^articles/([0-9])/$', views.year_archive,name='y_a'), # 帶引數的url反向解析

django的三種響應方式,render是渲染乙個頁面,httpresponse是返回乙個字串,redirect重定向34

#create your views here.56

defspecial_case_2003(request):

78 url=reverse('

s_c_2003')

9print

(url)

00 year=2000

10print(reverse('

y_a',args=(year,))) #

如果要傳遞引數,後面跟元祖,

4、命名空間 

#

命名空間:include放乙個元祖

Django的路由層

一 簡單的路由配置 from django.conf.urls import urlviews urlpatterns path views.index 二 有名分組 先欠著三 分發 from django.conf.urls import include,url urlpatterns url r...

Django的日常 路由層

目錄反向解析 路由的分發 我們之前已經接觸過路由層,只是我們可能不知道他叫這個名字,實際上在django裡面路由層指的就是urls.py這個檔案.路由的概念是什麼,我們平時生活中接觸最多的和路由有關的大概就是路由器了,那麼路由器是幹嘛的?路由器是連線多個網路的硬體裝置,在網路之間起到閘道器的作用,可...

django之路由層

1.django中urls.py負責url的路由分發urlpatterns url r admin admin.site.urls url的第乙個引數實際為乙個正規表示式,第二個引數為檢視函式。瀏覽器訪問時,會遍歷該列表,匹配到則終止,不再往下匹配。當使用者訪問的url不存在時,django會嘗試將...