Django學習筆記五(URL排程器)

2021-09-24 01:37:55 字數 3885 閱讀 6290

1。django處理請求

django依次匹配每個url模式,在與請求的url匹配的第乙個模式停下來,如:

from django.urls import path

form .

import views

urlpatterns =

[ path(

'articles/2003/'

, views.special_case_2003)

, path(

'articles//'

, views.year_archive)

, path(

'articles///'

, views.month_archive)

, path(

'articles////, views.article_detail')]

# 請求/articles/2005/03/與列表中的第三個條目匹配。django會呼叫該函式 views.month_archive(request, year=2005, month=3)

# /articles/2003/將匹配列表中的第乙個模式,而不是第二個模式,因為模式是按順序測試的,第乙個是第乙個要通過的測試。隨意利用訂單插入這樣的特殊情況。在這裡,django會呼叫該函式 views.special_case_2003(request)

# /articles/2003 不匹配任何這些模式,因為每個模式都要求url以斜槓結尾。

# /articles/2003/03/building-a-django-site/將匹配最終模式。django會呼叫該函式 。views.article_detail(request, year=2003, month=3, slug="building-a-django-site")

2.路徑轉換器

3. 使用 include() 包含其他的urlconf

# 每當django遇到時include(),它都會刪除與該點匹配的url的任何部分,並將剩餘的字串傳送到包含的urlconf以進行進一步處理。

from django.urls import include, path

from credit import views as credit_views

extra_patterns =

[ path(

'reports/'

, credit_views.report)

, path(

'reports/'

, credit_views.report)

, path(

'charge'

, credit_views.charge),]

# 在這個例子中,/credit/reports/ 將被credit_views.report()這個檢視處理

urlpatterns =

[ path(

'', main_views.homepage)

, path(

'help/'

, include())

, path(

'credit'

, include(extra_patterns)),

]

# 在下面的例子中,主頁捕獲的"username"變數將被如期傳遞給包括 views.blog.index 指向的url配置。

# in settings/urls/main.py

from django.urls import include, path

urlpatterns =

[ path(

'/blog/'

, include(

'foo.urls.blog'))

,]# in foo/urls/blog.py

from django.urls import path

from

.import views

urlpatterns =

[ path(

'', views.blog.index)

, path(

'archive/'

, views.blog.archive)

,]

4. 傳遞額外的引數
from django.urls import path

from . import views

urlpatterns = [

path('blog/', views.year_archive, )

]在這個例子中,對於請求 /blog/2005/ ,將呼叫 views.year_achive(request, year=2005, foo=bar)

5. url的反向解析

django提供了用於執行url反轉的工具,這些工具匹配需要url的不同層:

from django.urls import path

from

.import views

urlpatterns =

[ path(

'articles//'

, views.year_archive, name=

'news-year-archive')]

# 在模板中使用

))

6. url命名空間
# 第一種

# polls/urls.py

from django.urls import path

from

.import views

'polls'

urlpatterns =

[ path(

'', views.indexview.as_view(

), name=

'index'),

path(

'/', views.detailview.as_view(

), name=

'detail'),

]# urls.py

urlpatterns =

[ path(

'polls/'

, include(

'polls.urls'))

,]# 第二種

from django.urls import include, path

from

.import views

polls_patterns =([

path(

'', views.indexview.as_view(

), name=

'index'),

path(

'/', views.detailview.as_view(

), name=

'detail'),

], polls)

urlpatterns =

[ path(

'polls/'

, include(polls_patterns)),

]

Django學習筆記之url路由

一 django中路由的作用 其本質是url與該url要呼叫的檢視函式之間的對映,就是為告訴django對客戶端發過來的某個url應該呼叫執行哪一段邏輯 二 路由基本的配置 from django.conf.urls import url urlpatterns必須是乙個由url 例項組成的pyth...

django學習筆記011 捕獲url引數

前面我們講到,django的mvt框架,在urls.py裡面利用正規表示式對http請求的url進行匹配,但是如何獲得http請求裡面的傳送的引數呢?利用正規表示式的分組進行獲取引數 url r books d views.detail d 為正規表示式裡面的組 獲取位置的引數,並傳給view裡面的...

Django學習筆記(二)URL編寫規則

from django.contrib import admin from django.urls import path urlpatterns 整個專案的url集合,每個元素代表一條url資訊 path admin admin.site.urls 設定admin的url,admin 代表127....