具有不同根的Django URL模式

时间:2011-01-19 15:25:16

标签: python django django-urls

我有两个URL模式,它们都存在于我正在设置的同一个应用程序中。

我需要像以下网址一样工作。

然而,这两个都存在于同一个django应用程序中。

我的主要urls.py在处理/ p / 12345网址时看起来像这样。

urlpatterns = patterns('',

(r'^p/', include('myproject.myapp.urls')),
)

和我的应用程序的urls.py类似。但这仍然只处理/ p / 12345网址。

urlpatterns = patterns('myproject.myapp.views',

(r'^(?P<object_id>\d+)/$', 'some_view'),
)

我的问题是两者几乎完全相同,但只是有不同的前缀。我如何为/ p / 12345和/ s / 12345网址执行此操作。我已经阅读了文档,但无法解决这个问题。我已经想过用'urls.py文件做'草率'的方法,但我知道必须有更好的方法。

1 个答案:

答案 0 :(得分:0)

您可以包含空模式的网址文件。你可以这样做:

main urls.py

urlpatterns = patterns('',
    (r'foo/', 'foo_view'),
    (r'^', include('myproject.myapp.urls')),
)

app urls.py

urlpatterns = patterns('puzzlequest.pq.views',
    (r'^p/(?P<object_id>\d+)/$', 'some_view'),
    (r'^s/(?P<object_id>\d+)/$', 'other_view'),
)

请注意,其他路线(如foo/)必须先行。