2012-05-22 2 views
0

여러 곳에서 사용할이 HTML이 있습니다.부울을 받아 HTML을 반환하는 Django 템플릿 태그

{%의 tf_label 이벤트 :

  {% if event.finished_payments %} 
      <span class="label label-success">Complete</span> 
      {% else %} 
      <span class="label label-important">Incomplete</span> 
      {% endif %} 

나는 부울에 소요 <span class="label label-success">Complete</span> 또는 <span class="label label-important">Incomplete</span>이 인수가 나는 이런 식으로 뭔가를 보이는 가정 True 또는 False 여부에 따라 반환하는 템플릿 태그를 작성합니다. finished_payments %}

또는 include 템플릿 태그를 사용하고 매개 변수를 전달하는 다른 방법이 있습니까?

답변

3

이 (안 테스트) 트릭을 수행해야합니다

from django import template 

register = template.Library() 

@register.simple_tag 
def tf_label(request, complete): 
    if complete: 
     element = '<span class="label label-success">Complete</span>' 
    else 
     element = '<span class="label label-important">Incomplete</span>' 

    return element 
2
{{ event.finished_payments|yesno:"<span class='label label-success'>Complete</span>,<span class='label label-important'>Incomplete</span>" }} 

하지만 생각 {% if %} 태그를 사용하는 것이 더 읽을 수있어, 여기에 좋은 생각이다. 어쨌든 HTML은 파이썬 코드가 아닌 템플릿에 있어야합니다.

+0

좋은 해결책. 또 다른 옵션은 포함 태그입니다. yesno-filter보다 더 읽기 쉽고/장황한 것으로 간주 될 수 있으며 html은 템플릿에 포함되어 있습니다. – arie

관련 문제