2011-06-11 9 views
0

나는 유연한 URL을하려고합니다. 나는이 방법유연한 정규 표현식 URL, Django

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

문제는 오류가

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

get_absolute_url했다 :

direct_to_template() got multiple values for keyword argument 'template'

것은 무엇을 의미 하는가? 내가 어떻게 고칠 수 있니?

파이썬 대화 형 통역원에서이 정규 표현식은 내가 그 앰퍼샌드가 무엇을하고 있는지 이해하지,하지만 신경 쓰지 않는

>>> 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에 명명 된 그룹을 사용하지 않았다고 생각됩니다. 따라서 캡처 된 문자열은 첫 번째 위치 인수 인 view 함수로 보내지는데 실제로는 template이므로 템플릿 키워드 arg와 충돌합니다.

명명 된 그룹 - &(?P<my_arg>\w*)?/?$을 사용하면 제대로 작동합니다.

+0

"/ admin"의 앰퍼샌드가이 정규식과 일치하지 않습니다. – I159

+0

응용 프로그램을 개발하는 한 가지 방법이나 다른 방법은 정규 표현식이 여전히 명명 된 그룹이어야한다는 것입니다. 감사. – I159