在django模板中设置和重置变量的值

时间:2011-04-16 08:01:38

标签: python google-app-engine django-templates

我想在django模板中设置和重置标志变量。这样做有什么办法吗?

{% for software in softwares %}
    //here want to asign default value to flag( flag = False)

    {% for mysoftware in mysoftwares %}
        {% if mysoftware.name == software.name %}
        //here want to set value to True to flag( flag = True)
        {{ software.name }}<br />
        {% endif %}
    {% endfor %}

    //check flag here
    {% if flag == False %}
    Software not assigned.
    {% endif %}
{% endfor %}

1 个答案:

答案 0 :(得分:5)

据我所知,没有办法做到这一点。也许在视图中预先计算元组列表,然后迭代它 - 显示结果。 e.g:

{% for software, assigned in software_list %}
  {% if assigned %}
    {{ software.name }}
  {% else %}
    Software not assigned
  {% endif %}
{% endif %}

然后,在您的视图中,只需使用简单的python构造填充software_list数据:

names = [mysoftware.name for mysoftware in mysoftwares]
software_list = [(software, software.name in names) for software in softwares]

并将其添加到您的上下文中。

尝试在模板中做太多事情往往很诱人,这并不是他们真正想要的。如果你将逻辑保存在它所属的python中,你将获得更好的可读性。