/ / Django-Template-Tag, das einen Booleschen Wert aufnimmt und html zurückgibt - django, django-templates

Django Schablonentag, das einen booleschen Wert annimmt und html zurückgibt - django, django-templates

Ich habe dieses bisschen HTML, das an mehreren Stellen verwendet wird.

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

Ich möchte ein Template-Tag schreiben, das einen Bool aufnimmt und zurückgibt <span class="label label-success">Complete</span> oder <span class="label label-important">Incomplete</span> je nachdem ob das argument ist True oder False was wohl so aussieht:

{% tf_label event.finished_payments%}

Alternativ ist eine andere Möglichkeit, dies mit dem zu erreichen include Template Tag und Parameter übergeben?

Antworten:

3 für die Antwort № 1

Dies sollte den Trick machen (nicht getestet):

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 für die Antwort № 2
{{ event.finished_payments|yesno:"<span class="label label-success">Complete</span>,<span class="label label-important">Incomplete</span>" }}

Aber es denke, mit {% if %} tag ist hier die beste Idee, es ist besser lesbar. Wie auch immer, HTML sollte in Templates leben, nicht in Python-Code.