2016-11-20 86 views
0

我是django領域的新手,並且想向django高手尋求幫助。如何使用下劃線分隔Django URL中的命名組?

現在我的網址已被 「/」,如下隔開的兩個命名組(product_slug和platform_slug):

/search/canon-eos-1d-x-mark-ii/dc-fever 

當前URL配置:

url(r'^search/(?P<product_slug>[\w\-]+)$', CustomSearchView(),     name='search_result_detail'), 
url(r'^search/(?P<product_slug>[\w\-]+)/(?P<platform_slug>[\w\-]+)$',  CustomSearchView(), name='search_result_platform'), 

我想強調使用作爲分隔符使URL短而乾淨:

/search/canon-eos-1d-x-mark-ii_dc-fever 

似乎它並不容易使用分隔符「/」以分隔命名組。 還有其他解決方案嗎?

回答

0

這是一個正則表達式,你可以使用任何你喜歡的字符。唯一的問題是你需要在你的捕獲組中更加嚴格,因爲\w也匹配下劃線。

url(r'^search/(?P<product_slug>[0-9a-z-]+)_(?P<platform_slug>[0-9a-z-]+)$' 
+0

謝謝丹尼爾。它運作良好。 – uses

0

謝謝丹尼爾。有效!這真的是正則表達式的問題。它沒有嘗試引用另一篇文章後: Regex: match everything before FIRST underscore and everything in between AFTER

url(r'^search/(?P<product_slug>[\w\-]+(?=_))$', CustomSearchView(), name='search_result_detail'), 
url(r'^search/(?P<product_slug>[\w\-]+(?=_))_(?P<platform_slug>(?<=_)[\w\-]+)$', CustomSearchView(), name='search_result_platform'), 

我測試了正則表達式工作良好http://pythex.org/。但令人遺憾的是,它在django中並不起作用。不知道有什麼問題。

相關問題