如何使用下划线分隔Django URL中的命名组?

时间:2016-11-20 08:53:51

标签: python django

我是django领域的新手,想寻求django大师的帮助。

现在我的网址有两个命名组(product_slug和platform_slug),用" /"分隔;如下:

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

当前网址配置:

 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

似乎不容易使用&#34; /&#34;以外的分隔符。分隔命名组。 还有其他解决方案吗?

2 个答案:

答案 0 :(得分:0)

它是一个正则表达式,你可以使用你喜欢的任何字符。唯一的事情是你需要在捕获组中限制更多,因为\w也匹配下划线。

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

答案 1 :(得分:0)

谢谢丹尼尔。有效!它是regexp的真正问题。它在引用另一篇文章之后尝试了它: Regex: match everything before FIRST underscore and everything in between AFTER

let dateFormatter = DateFormatter()
// Set the locale first ...
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
// ... and then the date format:
dateFormatter.dateFormat = "HH:mm:ss"

// ...

我测试了正则表达式在http://pythex.org/中运行良好。但遗憾的是,它在django中并没有起作用。不确定问题是什么。