在我的urls.py文件中,我目前有以下解析器:
url(r'$', 'methodology_home')
url(r'^(?P<methodology_type\w+)/$', 'methodology_home')我希望通过说明methodology_type是可选的(并在我的视图中指定一个带有默认值的参数)来合并这两者。通过简单地添加一个?在regexp中?我一开始是这么想的,但我没能让它工作起来。
有没有人有主意?
谢谢。
发布于 2014-09-23 23:38:03
您可以编写正则表达式来捕获optional url paramater
url(r'^(?:(?P<methodology_type>\w+)/?)?$', 'methodology_home')但是,这种方法的一个问题是,如果不提供参数,则视图将获得None。这是因为正则表达式实际上是匹配的,并且组的值是None
import re
pattern = re.compile(r'^(?:(?P<methodology_type>\w+)/?)?$')
pattern.match('foo').groupdict()
>>> {'methodology_type': 'foo'}
pattern.match('').groupdict()
>>> {'methodology_type': None}因此,您可以在视图代码中处理它:
def my_view(request, methodology_type):
methodology_type = methodology_type or 'default'
...或者你坚持你已经有的两个不同的规则。
https://stackoverflow.com/questions/25998818
复制相似问题