2014-12-09 61 views
0

我有這兩個Django的網址定義:Django的URL與多個參數

1 - 第一url

url(r'^(?P<language>.*)/(?P<shop>.*)/(?P<brand>.*)/$', 'app.views.view_1'), 

如:http://www.example.com/en/my-shop/my-brand/

2 - 第二個URL

url(r'^(?P<language>.*)/(?P<shop>.*)/(?P<brand>.*)/(?P<category>.*)/$', 'app.views.view_2'), 

如:http://www.example.com/en/my-shop/my-brand/my-brand-category/

期:當我打電話給FIRST url時,django url dispatcher正確調用了「app.views.view_1」視圖。但是,當我調用SECOND URL時,url調度程序再次調用「app.views.view_1」視圖,而不是調用「app.views.view_2」視圖。

什麼問題?錯誤的正則表達式?

非常感謝。

回答

1

您的捕獲組匹配任何字符,包括斜槓。你可以通過首先放置更具體的一個來解決這個問題,但是在任何情況下最好限制它們一些:slu common的常見格式是字母數字字符加破折號。此外,您可能想使用+而不是*,因爲每組需要至少一個字符。

r'^(?P<language>[\w-]+)/(?P<shop>[\w-]+)/(?P<brand>[\w-]+)/$' 

和其他模式相同。

+0

非常感謝!我會在家裏嘗試你的解決方案,我會給你一個迴應。謝謝! – 2014-12-09 13:09:33

+0

您的解決方案效果非常好!再次感謝你! – 2014-12-09 20:27:33