【问题标题】:Checking if something exists in items of list variable in Django template检查Django模板中的列表变量项中是否存在某些内容
【发布时间】:2011-10-26 14:52:52
【问题描述】:

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

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

但这当然行不通。知道如何基本上在一行中循环遍历列表中的项目并执行 if 语句吗?

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

【问题讨论】:

    标签: python django django-templates


    【解决方案1】:

    理想情况下,您会创建一个模板获取的列表:

    l = [s.name for s in sections]
    

    在模板中,使用:

    {% if 'Social' in l %}
    

    您正试图在模板中加入超出预期的逻辑。模板应该尽可能少地使用逻辑,而逻辑应该在填充模板的代码中。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 应该是s.name == 'Social'
      • 也许我应该包含不同的信息。我可能有多个“社交”部分。我在模板中尝试做的是说“如果有任何社交部分,则显示此 div。如果没有,请不要显示 div。”但我不希望 div 重复,这就是上面的代码会发生的情况。想法?
      【解决方案3】:
      {% if section.0.name == "Social" %}
          你好社会!
      {% endif %}

      【讨论】:

        猜你喜欢
        • 2011-06-20
        • 2011-11-20
        • 2011-10-11
        • 2012-02-05
        • 2011-09-07
        • 1970-01-01
        • 2013-06-07
        • 2012-08-22
        • 2019-04-08
        相关资源
        最近更新 更多