我尝试做灵活的网址。我是这样做的
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
答案 0 :(得分:1)
我不明白&符号在那里做什么,但没关系。
我怀疑问题是您没有在网址中使用过命名组。因此,捕获的字符串将作为第一个位置参数(实际为template
)发送到视图函数,因此它与模板关键字arg冲突。
使用命名组 - &(?P<my_arg>\w*)?/?$
- 它应该有效。