灵活的正则表达式url,Django

时间:2011-06-11 12:43:48

标签: regex django django-urls

我尝试做灵活的网址。我是这样做的

url(r'^(&\w*)?/?$', direct_to_template,
    {'template': 'basic.djhtml'}),

get_absolute_url

def get_absolute_url(self):
    return "/&%s" % self.human_redble_url

问题是错误:

  

direct_to_template()获得了关键字参数“template”

的多个值

这是什么意思?我怎么能解决它?

在Python交互式解释器中,这个正则表达式起作用

>>> import re
>>> reg = re.compile('^(&\w*)?/?$')
>>> result = reg.match('&post1')
>>> result
<_sre.SRE_Match object at 0xb77098a0>
>>> wrong = reg.match('aergsr')
>>> print wrong
None
>>> reg.match('post1')
>>> print reg.match('post1')
None
>>> print reg.match('&post1/')
<_sre.SRE_Match object at 0xb77097a0>
>>> print reg.match('&post1:')
None 

1 个答案:

答案 0 :(得分:1)

我不明白&符号在那里做什么,但没关系。

我怀疑问题是您没有在网址中使用过命名组。因此,捕获的字符串将作为第一个位置参数(实际为template)发送到视图函数,因此它与模板关键字arg冲突。

使用命名组 - &(?P<my_arg>\w*)?/?$ - 它应该有效。