我想在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 %}
答案 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中,你将获得更好的可读性。