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

Bre*_*den 5 python django django-templates

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

{% if s.name == "Social" for s in sections %}
    Hello Social!
{% endif %}
Run Code Online (Sandbox Code Playgroud)

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

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

Aar*_*our 12

理想情况下,您要做的是创建模板获取的列表:

l = [s.name for s in sections]
Run Code Online (Sandbox Code Playgroud)

在模板中,使用:

{% if 'Social' in l %}
Run Code Online (Sandbox Code Playgroud)

您试图将更多逻辑放入模板中,而不是将其用于模板.模板应该尽可能少地使用逻辑,而逻辑应该在填充模板的代码中.


Gab*_*oss 11

您不能在模板中使用列表推导:

{% for s in sections %}
  {% if s.name == 'Social' %}
    Hello Social!
  {% endif %} {# closing if body #}
{% endfor %} {# closing for body #}
Run Code Online (Sandbox Code Playgroud)