Django:模板标签 - 正确的方法?

Django: Template tag - the right way?

我写了下面这个简单的模板标签。我想知道在没有 i = 0 和 i + 1 的情况下是否有更好的写法,或者您认为这是好的解决方案吗?

@register.simple_tag
def taxes(taxes):
    i = 0
    s = ""

    for tax in taxes:
        if i is not 0:
            s += ", "
        s += tax.name
        i += 1

    output = "Incl. {}".format(s)
    return output

作为替代方案,我在我的模板中编写了这个函数。它有相同的结果,但模板标签对我来说似乎更有条理。

{% spaceless %}
{% for tax in form.initial.ticket.ticket_tax.all %}

    {% if forloop.first %}
        Incl.
    {% else %}
        ,
    {% endif %}

    {{ tax.name }} @
    {% get_tax_rate tax.percentage %}

{% endfor %}
{% endspaceless %}

更新:

这是新版本:

@register.simple_tag
def show_taxes(taxes):

    taxes = ', '.join('{} @ {} %'.format(
        tax.name,
        round(tax.percentage * 100, 2)
    ) for tax in taxes)

    if taxes:
        return 'Incl. {}'.format(taxes)
    else:
        return ''

模板版本似乎不错。但是如果你真的想写一个标签,有更简单的方法。例如:

taxes = ', '.join('{} @ {}'.format(tax.name, tax.percentage) for tax in taxes)
return 'Incl. {}'.format(taxes)