Django URLconfs 中通過包含其他URLconfs 來管理部分url相同的url
阿新 • • 發佈:2018-11-14
第一種情況:一個專案下每個相同app下的每個url有相同的字首,為了方便管理把各自的不同url部分交給各自的URLconfs管理。
在任何時候,你的urlpatterns 都可以包含其它URLconf 模組。這實際上將一部分URL 放置於其它URLconfs 下面。
from django.xonf.urls import include, url
urlpatterns = [
url(r'^community/', include('mysiteapp.urls')), # 把匹配後剩下的字串傳給mysiteapp的urls 模組
url(r'^contact/' , include('otherapp.urls')),
]
注意,這個例子中的正則表示式沒有包含$(字串結束匹配符),但是包含一個末尾的斜槓。每當Django 遇到include()(django.conf.urls.include())時,它會去掉URL 中匹配的部分並將剩下的字串傳送給包含的URLconf 做進一步處理。
第二種情況,在同一個app下或許部分url有相同字首
另外一種包含其它URL 模式的方式是使用一個url() 例項的列表。例如,請看下面的URLconf:
from django.conf.urls import include, url
extra_patterns = [
url(r'^reports/(?P<id>[0-9]+)/$' , app.view.report),
url(r'^charge/$', app.view.charge),
]
urlpatterns = [
url(r'^$', main_views.homepage),
url(r'^help/', include('help.urls')),
url(r'^credit/', include(extra_patterns)), # /credit/reports/231、/credit/charge/
]
在這個例子中,‘/credit/reports/123/ ’ URL將被 app.view.report() 這個Django 檢視函式處理。