在Jinja循环子集

Man*_*ert 13 python jinja2

Jinja允许我这样做

{% for item in all_items %}
    {{ item }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

但我希望能够只采取前n项; 在Python中将是

for item in all_items[:n]:
Run Code Online (Sandbox Code Playgroud)

在Jinja有没有优雅的方法来做到这一点,除了

{% for item in all_items %}
    {% if loop.index <= n %}
        {{ item }}
    {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

mik*_*iku 21

您可以使用普通的python切片语法.

>>> import jinja2
>>> t = jinja2.Template("{% for i in items[:3] %}{{ i }}\n{% endfor %}")
>>> items = range(10)
>>> print(t.render(items=items))
0
1
2
Run Code Online (Sandbox Code Playgroud)

  • 在生活中,我们有时候看不到最明显的.谢谢 :) (2认同)