1

我有一些 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>取决于参数是否TrueFalse我认为看起来像这样:

{% tf_label event.finished_pa​​yments %}

include或者,是否有另一种使用模板标签并传入参数来实现此目的的方法?

4

2 回答 2

4

这应该可以解决问题(未经测试):

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
于 2012-05-22T08:51:43.200 回答
4
{{ event.finished_payments|yesno:"<span class='label label-success'>Complete</span>,<span class='label label-important'>Incomplete</span>" }}

但它认为,{% if %}在这里使用标签是最好的主意,它更具可读性。无论如何,HTML 应该存在于模板中,而不是 Python 代码中。

于 2012-05-22T08:55:35.880 回答