Гибкое регулярное выражение url, Django - PullRequest
0 голосов
/ 11 июня 2011

Я пытаюсь сделать гибкий URL. Я сделал это так

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 Ответ

1 голос
/ 11 июня 2011

Я не понимаю, что там делает этот амперсанд, но не берите в голову.

Я подозреваю, что проблема в том, что вы не использовали именованные группы в своем URL.Таким образом, захваченная строка передается в функцию представления в качестве первого позиционного аргумента, который на самом деле template, поэтому он конфликтует с ключевым словом шаблона arg.

Используйте именованную группу - &(?P<my_arg>\w*)?/?$ - иэто должно работать.

...