我有一个传递给Django模板的部分列表。这些部分有不同的类型。我想说“如果有这种类型的部分,在我的模板中显示此行”,但有问题。我基本上要做的就是这个。
{% if s.name == "Social" for s in sections %}
Hello Social!
{% endif %}
但当然这不起作用。任何想法如何基本上在一行循环遍历列表中的项目并执行if语句?
附加信息:我可能有多个“社交”部分。我在模板中尝试做的是说“如果有任何社交部分,则显示此div。如果没有,则不显示div。”但是我不希望div重复,这就是上面代码会发生的情况。
答案 0 :(得分:12)
理想情况下,您要做的是创建模板得到的列表:
l = [s.name for s in sections]
在模板中,使用:
{% if 'Social' in l %}
你试图将更多的逻辑放入模板中而不是它们的意图。模板应该使用尽可能少的逻辑,而逻辑应该在填充模板的代码中。
答案 1 :(得分:9)
您不能在模板中使用列表推导:
{% for s in sections %}
{% if s.name == 'Social' %}
Hello Social!
{% endif %} {# closing if body #}
{% endfor %} {# closing for body #}
答案 2 :(得分:0)
{% if sections.0.name == "Social" %} Hello Social! {% endif %}