2011-06-11 1 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

+0

Так или иначе, чтобы продолжить разработку приложения, регулярное выражение все равно должно быть именованной группой. Благодарю. – I159

 Смежные вопросы

  • Нет связанных вопросов^_^