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

8 投票
3 回答
22746 浏览
提问于 2025-04-16 23:33

我有一个包含多个部分的列表,这些部分有不同的类型,我把这个列表传给Django的模板。我想在模板里说“如果有这种类型的部分,就显示这一行”,但是遇到了一些问题。其实我想做的就是这样。

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

但当然这样是行不通的。有没有什么办法可以在一行代码里遍历列表中的项目并做一个判断呢?

补充信息:我可能会有多个“社交”部分。我在模板里想说“如果有任何社交部分,就显示这个div。如果没有,就不显示这个div。”但是我不想让这个div重复显示,这样上面的代码就会出现这个问题。

3 个回答

-1

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,不知道该怎么解决。比如,有人可能在使用某个特定的功能时,发现它并没有按照预期工作,这时候就需要去查找原因。

通常,我们可以通过查看文档、搜索网上的资料或者在社区论坛上提问来找到解决方案。很多时候,其他人也遇到过类似的问题,他们的经验和解决办法可以帮助我们更快地找到答案。

在提问的时候,描述问题的细节非常重要。比如,说明你使用的工具版本、你尝试过的解决方法,以及你遇到的具体错误信息。这些信息能帮助别人更好地理解你的问题,从而提供更有效的帮助。

总之,遇到问题时不要着急,耐心寻找解决方案,通常都会有办法解决的。

{% if sections.0.name == "Social" %}
    Hello Social!
{% endif %}
15

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

{% for s in sections %}
  {% if s.name == 'Social' %}
    Hello Social!
  {% endif %} {# closing if body #}
{% endfor %} {# closing for body #}
18

理想情况下,你应该创建一个列表,然后把这个列表传给模板,像这样:

l = [s.name for s in sections]

在模板中,你可以这样使用:

{% if 'Social' in l %}

你现在试图在模板里放入过多的逻辑,这其实不是它们的用途。模板应该尽量少用逻辑,而逻辑应该放在填充模板的代码里。

撰写回答