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....