W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在任何時(shí)候,你的 ?urlpatterns
都可以include其它URLconf 模塊。這實(shí)際上將一部分URL 放置于其它URL 下面。
例如,下面是URLconf Django website 自己的URLconf 中一個(gè)片段。它包含許多其它URLconf:
from django.urls import include, path
urlpatterns = [
# ... snip ...
path('community/', include('aggregator.urls')),
path('contact/', include('contact.urls')),
# ... snip ...
]
每當(dāng) Django 遇到 ?include()
? ,它會(huì)將匹配到該點(diǎn)的URLconf的任何部分切掉,并將剩余的字符串發(fā)送到包含的URLconf進(jìn)行進(jìn)一步處理。
另一種可能性是通過使用 ?path()
? 實(shí)例的列表來包含其他 URL 模式。比如,看這個(gè) URLconf:
from django.urls import include, path
from apps.main import views as main_views
from credit import views as credit_views
extra_patterns = [
path('reports/', credit_views.report),
path('reports/<int:id>/', credit_views.report),
path('charge/', credit_views.charge),
]
urlpatterns = [
path('', main_views.homepage),
path('help/', include('apps.help.urls')),
path('credit/', include(extra_patterns)),
]
在這個(gè)例子中, ?/credit/reports/
? URL將被 ?credit.views.report()
? 這個(gè)Django 視圖處理。
這種方法可以用來去除URLconf 中的冗余,其中某個(gè)模式前綴被重復(fù)使用。例如,考慮這個(gè)URLconf:
from django.urls import path
from . import views
urlpatterns = [
path('<page_slug>-<page_id>/history/', views.history),
path('<page_slug>-<page_id>/edit/', views.edit),
path('<page_slug>-<page_id>/discuss/', views.discuss),
path('<page_slug>-<page_id>/permissions/', views.permissions),
]
我們可以改進(jìn)它,通過只聲明共同的路徑前綴一次并將后面的部分分組:
from django.urls import include, path
from . import views
urlpatterns = [
path('<page_slug>-<page_id>/', include([
path('history/', views.history),
path('edit/', views.edit),
path('discuss/', views.discuss),
path('permissions/', views.permissions),
])),
]
被包含的URLconf 會(huì)收到來自父URLconf 捕獲的任何參數(shù),所以下面的例子是合法的:
# In settings/urls/main.py
from django.urls import include, path
urlpatterns = [
path('<username>/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),
]
在上面的例子中,捕獲的?username
?變量將被如期傳遞給?include()
?指向的URLconf。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: