2013-12-16 5 views
5

url` 내장 된 태그 '의 캐릭터 라인 인수에 변수를 확장하는 방법 : 당신이 name을 볼 수 있듯이장고 템플릿 : 나는 다음 템플릿 조각 작업을 만들기 위해 노력하고

<ul> 
    {% for name,label in entries.items %} 
    <li><a href="{% url name %}">{{ label }}</a></li> 
    {% endfor %} 
</ul> 

는 변수입니다 그 문자열을 url 내장 태그로 전달하기 전에 문자열로 확장해야합니다. 다음과 같은 예외

불행하게도 상기 템플릿 조각 결과 :

Exception Type: TemplateSyntaxError 
Exception Value:  
Caught NoReverseMatch while rendering: Reverse for 'name' with arguments '()' and keyword arguments '{}' not found. 

이를 달성하는 방법에 대한 아이디어 나 다른 방법?

답변

2
코드는> = 1.4 (IIRC) 장고을 위해 일해야

- 가정 name 유효한 url 이름으로 해석되며이 url에는 args 또는 kwargs가 필요하지 않습니다. Django 1.3x의 경우이 작업을 수행하려면 템플릿에 {% load url from future %}을 추가해야합니다. django < 1.3의 경우 운이 좋지 않습니다 (물론 사용자 정의 태그를 작성해야합니다).하지만 어쨌든 코드 포팅을 고려해야합니다.

+0

이것은 내가 찾던 해답이다. 그것은 작동합니다! 감사! :) (나는 장고 1.3.7을 사용하고있다) – fstab

3

{% url %} templatetag에 변수를 전달할 수 있습니다. name이 유효한 url 패턴 이름 인 경우이 스 니펫이 작동해야합니다. 유효한 URLPATTERN 이름 name을 변환해야하는 경우

, 당신은 다음과 같이 사용자 정의 필터를 사용하여 작업을 수행 할 수 있습니다

{% url name|my_filter %} 
+0

답변 해 주셔서 감사합니다. django url resolver 함수를 호출하는 사용자 정의 필터를 만드는 것이 약간 중복 된 것처럼 보입니다. 이것이 내가 템플릿 내에서 솔루션을 원했던 이유입니다. 그런데 – fstab

+0

,'name'에는 이미 유효한 url 패턴 이름이 들어 있습니다. – fstab

+1

@niekas : 게시 한 예제 구문은 태그가 아닌 필터 용입니다. –