检查Django模板中列表变量项中是否存在某些内容

时间:2011-08-14 00:31:07

标签: python django django-templates

我有一个传递给Django模板的部分列表。这些部分有不同的类型。我想说“如果有这种类型的部分,在我的模板中显示此行”,但有问题。我基本上要做的就是这个。

{% if s.name == "Social" for s in sections %}
    Hello Social!
{% endif %}

但当然这不起作用。任何想法如何基本上在一行循环遍历列表中的项目并执行if语句?

附加信息:我可能有多个“社交”部分。我在模板中尝试做的是说“如果有任何社交部分,则显示此div。如果没有,则不显示div。”但是我不希望div重复,这就是上面代码会发生的情况。

3 个答案:

答案 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 %}