/ ブール値を取り込んでhtmlを返す/ Djangoテンプレートタグ - django、django-templates

ブール値をとり、htmlを返すDjangoテンプレートタグ - django、django-templates

私はこのHTMLをいくつかの場所で使用する予定です。

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

boolを取り込んで返すテンプレートタグを書きたい <span class="label label-success">Complete</span> または <span class="label label-important">Incomplete</span> 引数が True または False これは次のようになります。

{%tf_label event.finished_pa​​yments%}

あるいは、これを使用してこれを達成する別の方法です。 include テンプレートタグとパラメータを渡しますか?

回答:

回答№1の場合は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については2
{{ event.finished_payments|yesno:"<span class="label label-success">Complete</span>,<span class="label label-important">Incomplete</span>" }}

だけど、使って {% if %} とにかくHTMLはPythonのコードではなくテンプレートの中にあるべきです。