Django URL模式与不同根路径

1 投票
1 回答
1752 浏览
提问于 2025-04-16 10:15

我正在设置一个应用程序,里面有两个网址格式,它们都需要正常工作。

我需要像下面这样的链接能够使用:

不过,这两个链接都在同一个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

你可以在一个URL文件中包含一个空的模式。你可以这样做:

主urls.py文件

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

应用的urls.py文件

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

注意,其他的路由(比如 foo/)必须放在前面。

撰写回答