我有一些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_payments%}
或者,是使用include
模板标记和传入参数实现此目的的另一种方法吗?
答案 0 :(得分: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
答案 1 :(得分:2)
{{ event.finished_payments|yesno:"<span class='label label-success'>Complete</span>,<span class='label label-important'>Incomplete</span>" }}
但它认为,使用{% if %}
标签是最好的主意,它更具可读性。无论如何,HTML应该存在于模板中,而不是Python代码中。