【问题标题】:jinja2 first x items in for ... if loopjinja2 for ... if 循环中的前 x 个项目
【发布时间】:2012-09-11 11:16:42
【问题描述】:

我的 jinja2 模板中有以下循环

{% for item in list if item.author == 'bob' %}

我正在尝试获取以 bob 作为作者的前 5 个项目。

我试过了

{% for item in list if item.author == 'bob' and loop.index <= 5 %}

但它返回了一个未定义的错误。

如何让它发挥作用?

【问题讨论】:

  • 这听起来像是你通常想要在你的 python 代码中做的事情,而不是模板。

标签: python loops flask jinja2


【解决方案1】:

编辑:

你可以简单地嵌套表达式吗?,即

{% for item in list if item.author == 'bob' %}
    {% if loop.index <= 5 %}
       do something
    {% endif %}
{% endfor %}

【讨论】:

  • 这将获得数组的前 5 个项目,而不是作者 bob 的那些。如果我有一个包含 10 个项目的数组,而 bob 写了最后 5 个,这将不会返回任何内容
  • 我同意 Wooble 的观点,这种逻辑可能应该在你进入模板之前进行排序,也许让列表成为以作者为键的列表的字典?
  • 嵌套循环呢?如何从父循环访问loop 变量
【解决方案2】:

你可以跳过前 x 个元素

{% for category in categories[x:] %}

所有可用于常规列表的表达式

【讨论】:

    【解决方案3】:

    你也可以使用

    {% for item in list[0:6] %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多