1. 程式人生 > >Django URLconfs 中通過包含其他URLconfs 來管理部分url相同的url

Django URLconfs 中通過包含其他URLconfs 來管理部分url相同的url

第一種情況:一個專案下每個相同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 檢視函式處理。