25

我想知道是否可以将标准 url 模式分布在多个文件中(在这种情况下是项目范围urls.py和几个特定于应用程序的文件urls.py)。

想象一下项目urls.py看起来像这样(让它工作):

from django.conf.urls import patterns, include, url
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^user/signup/', 'registration.views.signup'),
    url(r'^user/confirm/(?P<code>\w{20})/', 'registration.views.confirm'),
    url(r'^user/profile/(\d+)/', 'profile.views.show'),
    url(r'^user/profile/edit/', 'profile.views.edit'), 
)

如您所见,我有两个不同的应用程序都想使用 /user/* 的 url,所以我不能只使用r'^user/'包含。

我的问题是:我可以将以上内容分成两个单独的urls.py文件,每个文件都进入各自的应用程序吗?

注意:忽略任何语法错误,因为这是输入的

4

2 回答 2

45

当然。URL 是按顺序处理的,两个包含可以具有相同的前缀 - 如果一个没有成功匹配,则处理将继续进行下一个。

urlpatterns = patterns('',
    url(r'^user/', include('registration.urls')),
    url(r'^user/', include('profile.urls')),
)
于 2012-07-23T18:27:02.500 回答
6

我也建议添加这样的命名空间:

urlpatterns = patterns('',
    url(r'^user/', include('registration.urls', namespace="registration")),
    url(r'^user/', include('profile.urls', namespace="profile")),
)
于 2014-07-08T05:58:23.067 回答