Django:将URL参数附加到列表中?

时间:2013-01-05 13:02:38

标签: python django django-urls

我目前拥有/blue形式的网址 - 每个网址都是一种颜色。关联的URL模式如下:

 (r'^(?P<colour>\w+)$', 'views.colour')

我想知道是否可能有一个看起来像自然语言列表的URL,长度不确定,以-or-分隔:

/blue-or-green-or-yellow

理想情况下,关联的URL模式会将每个匹配追加到Python列表中,随时可以在视图中处理:

 (r'^(?P<colour_list>\w+)(?:-or-(?P<colour_list>\w+))+$', 'views.colour')

有没有办法在Django中这样做?

3 个答案:

答案 0 :(得分:4)

(?P<colour_list>(\w+(\-or\-)?)+)之类的内容会获得整个子字符串匹配,然后您可以按-or-分割

但请注意,然后blue-or-才有效匹配,因此您可能希望将其拆分为:filter(bool, colour_list.split('-or-'))

答案 1 :(得分:0)

这样的事情会有所帮助:

采用逗号分隔的颜色

(r'^(?P<colours>[\w,]+)$', 'views.colour')

然后在视图中:

colours = colours.split(',')

答案 2 :(得分:0)

试试这个regex

(\w+(?:-or-)?)+

或使用字符串拆分:

result = colours.split("-or-")