2011-06-11 73 views
0

我尝试做灵活的url。我就是这么做的灵活的正则表达式url,Django

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() got multiple values for keyword argument '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

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

我怀疑问题是你没有在你的URL中使用命名组。所以捕获的字符串作为第一个位置参数被发送到视图函数,实际上它是template,所以它与模板关键字arg冲突。

使用一个命名组 - &(?P<my_arg>\w*)?/?$ - 它应该工作。

+0

此处的&符号“/ admin”与此正则表达式不匹配。 – I159 2011-06-11 20:03:36

+0

进一步开发应用程序的方式之一是正则表达式仍然必须是一个命名组。谢谢。 – I159 2011-06-11 20:16:53