如何在Django模板中更改变量的值?

时间:2019-07-17 07:37:23

标签: python django django-templates

我想在Django模板中声明一个flag变量,如果发生某些事情,请更改它。 但是,当我通过自定义标签更改变量的值时,它将被声明为新变量,并且不会更改。

例如我的模板标签和Django模板是:

模板标签:

@register.simple_tag
def update_variable(value):
    return  value

html:

{% with True as flag %}
     <h1>1: {{ flag }}</h1>
     {% for e in events %}
         {% if e.title == '***' %}
             {% update_variable False as flag %}
             <h1>2: {{ flag }}</h1>
         {% endif %}
     {% endfor %}
     <h1>3: {{ flag }}</h1>
{% endwith %}

结果是:

1: True
2: False
3: True

但是最终结果应该为False!该怎么做?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。要检查列表的所有元素,我们可以使用自定义过滤器,并在其中做一些事情:

html:

 //load custom filter
 {% load my_filters %}


 {% if "anything we want"|is_in:events.all %}
    //do some thing...
 {% else %}
    //do some thing...
 {% end if%}

my_filter文件中的自定义过滤器:

 register = template.Library()

 def is_in(case, list):
     for element in list:
        if element.time_span == case:
            return True
     return False
 register.filter(is_in)