模板标签Django

时间:2016-01-13 13:17:20

标签: django django-templates

如何在Django模板中使用模板标签?

{% if proposal.status == 'c' %}
  <td><i class="fa fa-close fa-fw status-cancelado"></i></td>
{% elif proposal.status == 'elab' %}
  <td><i class="fa fa-circle fa-fw status-elab"></i></td>
{% elif proposal.status == 'p' %}
  <td><i class="fa fa-circle fa-fw status-pendente"></i></td>
{% elif proposal.status == 'co' %}
  <td><i class="fa fa-check fa-fw status-concluido"></i></td>
{% elif proposal.status == 'a' %}
  <td><i class="fa fa-star fa-fw status-aprovado"></i></td>
{% endif %}

我使用下面的代码,但返回错误。

from django import template
from django.utils.html import mark_safe

register = template.Library()


@register.tag
def status_icon(status):
    icons = {
        'c': 'fa-close status-cancelado',
        'elab': 'fa-circle status-elab',
        'p': 'fa-circle status-pendente',
        'co': 'fa-check status-concluido',
        'a': 'fa-star status-aprovado'
    }
    return mark_safe('<i> class="{}"</i>'.format(icons[status]))

但是返回错误。 .................................................. ................................................. < / p>

enter image description here

1 个答案:

答案 0 :(得分:2)

我最终会得到这样的结果:

# yourapp/templatetags/yourapp_tags.py
from django import template
from django.utils.html import mark_safe

register = template.Library()

@register.simple_tag
def status_icon(status):
    icons = {
        'c': 'fa fa-close fa-fw status-cancelado',
        'elab': 'fa fa-circle fa-fw status-elab',
        # etc
    }
    return mark_safe('<i class="%s"></i>' % icons[status])

使用示例:

{% load yourapp_tags %}
<td>{% status_icon proposal.status %}</td>