在django模板中定义标志变量

时间:2017-08-17 11:52:32

标签: python django django-templates

我是Django的新手,我试图在模板中搜索某些内容,如果我发现它想要打印某些东西,如果不是我想要打印别的东西。 ......这样:

{% for art in artifacts %}
{% if art.product_component == 'A' %}
<p> something.</p>
{{ found = True }}
{% endif %}
{% endfor %}

{% if not found  %}
<p>NA</p>
{% endif %}

我知道这不是正确的做法,但这只是为了理解这个想法。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您可以编写模板标签以查找product_component == 'A'是否存在。

<强> your_app_dir / templatetags / product_tag.py

from django import template
from django.template import Library

register = Library()

@register.assignment_tag()
def check_product_component_status(artifacts):
    value =  [art for art in artifacts if art.product_component == 'A']
    if value:
        return True
    return False

模板:

{% for art in artifacts %}
    {% if art.product_component == 'A' %}
        <p> something.</p>
    {% endif %}
{% endfor %}

{% load product_tag %}
{% check_product_component_status artifacts as status %}
{% if not status %}
    <p> something.</p>
{% endif %}