2011-01-19 61 views
1

我有兩個URL模式,這兩個模式都存在於我正在設置的相同應用程序中。Django具有不同根的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網址做到這一點。我已經閱讀了文檔,但無法弄清楚這一點。我已經想到了用2個urls.py文件做到這一點的「草率」方法,但我知道必須有更好的方法。

回答

0

您可以包含一個空格式的URL文件。其他途徑(如foo/)必須是第一位的

主要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'), 
) 

注意:你能做到這一點。

+2

有沒有辦法讓根路徑,即`http:// www.example.com /`,在包含的URLconf中定義,而不是在根URLconf中定義?似乎無法使其工作。 – jmagnusson 2011-04-06 10:53:50