如何在 Jinja 中对排序列表进行切片?

How to slice a sorted list in Jinja?

我有一个字典列表。我想先对该列表进行排序,然后只迭代这些项目的一个子集。

这是我试过的:

{% for response in responses|sort(true, attribute='response_date')[:5] %}
    <p>response</p>
{% endfor %}

但 Jinja 不喜欢这种语法,并引发错误 TemplateSyntaxError: expected token 'end of statement block', got '['

如果我不使用 sort() 过滤器,则切片有效。但是我想两者一起使用。

你不能简单地将 responses|sort(true, attribute='response_date') 括起来吗?

{% for response in (responses|sort(true, attribute='response_date'))[:5] %}
    <p>response</p>
{% endif %}

您可以通过将 sort 括在括号中来实现此目的:

{% for response in (responses|sort(true, attribute='response_date'))[:5] %}
   <p>response</p>
{% endfor %}