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

版权声明:可以胡乱转载。 https://blog.csdn.net/hunyxv/article/details/78184566

第一种情况:一个项目下每个相同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 视图函数处理。

猜你喜欢

转载自blog.csdn.net/hunyxv/article/details/78184566
今日推荐