2010-08-09 1 views
2

,의 사용자 정의 템플릿 태그Django 템플릿에서 템플릿 태그 값을 재사용 할 수있는 방법이 있습니까? 예를 들어

{% custom_tag "parameter" %} 

이 태그는 계산 심각한 데이터베이스 작업이 필요하다 가정 해 봅시다. 내가 컨텍스트 변수 난 그냥 할 수 있다는 것을 알고

if {% custom_tag "parameter" %} 
.... 
else 
.... 

:

지금 나는 그 (의사) 같은 것을 가질 필요가

{% with variable.x.y.z as v %} 
{% if v %} 
    Blah-Blah-Blah {{ v }} 
{% else %} 
    No value 
{% endif %} 
{% endwith %} 

을하지만 이것을 달성 할 수있는 방법이있다 템플릿 태그 값?

편집 : 지금까지 내놓았다 한 유일한 옵션은 내 템플릿 태그에서 필터를 만드는 것입니다 :

{% if "parameter" | custom_tag %} 
Blah {{ "parameter" | custom_tag }} 
{% else %} 
.... 
{% endif %} 

을하지만,이 옵션은 custom_tag 두 번 실행하게, 그리고 좋은 성능 - 아니다 현명한

답변

3

나는 그것을 테스트하지 않은하지만 난 당신이 .. 어쩌면 이것이 내가 당신이 filteri의 결과를 할당 할 수 있다고 생각하면 http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#setting-a-variable-in-the-context

+0

불행하게도, 나는 매개 변수 templatetag 사용하는, 그래서 정말에 대한 컨텍스트 변수를 만들 수 없습니다 :( – xyzman

+0

잘 난 여전히 당신이 보면 당신의 대답은, 내가 게시 된 링크이라고 생각 그들의 예에서는 매개 변수를 사용자 지정 태그에 전달하고 결국 나머지 템플릿에서도 사용할 수있는 변수를 만듭니다. 따라서 다음과 같이 할 수 있습니다. {% custom_tag "parameter"%} {%가 응답 % 경우} 즐 즐 {% 다른 사람 %} 즐 즐 "응답" – pleasedontbelong

+0

감사 아이디어에 대한 사용자 정의 태그에 생성 된 변수라고 가정. 내부에 컨텍스트 변수를 설정하는 사용자 정의 태그를 정의했습니다. 그냥 "do_with"django template/defaulttags.py를 보라. – xyzman

1

도움이 될 것입니다 사용자 정의 태그에서 상황에 변수를 추가 할 수있는 것 같아요 변수를 사용하고 그것을 사용하십시오. 이렇게하면 필터는 only get called once이됩니다. 문서에서 : : 더 간단한 이름으로 복잡한 변수를 캐시합니다. 이는 '비싼'방법 (예 : 데이터베이스를 조회하는 방법)에 여러 번 액세스 할 때 유용합니다.

{% with "parameter" | custom_tag as result %} 
{% if result %} 
    Blah {{ result }} 
{% else %} 
    .... 
{% endif %} 
{% endwith %} 
관련 문제