Jinja2 - 以 x 为一组呈现列表项

Jinja2 - Render list items in groups of x

我希望在 jinja2 模板的 table 中输出项目列表。

当前代码:

<table style="width:100%">
{% for i in sales %}
  <tr>
     <td>{{i}}</td>
  </tr>
{% endfor %}
</table>

这导致:

item
item
item
item
...

预期输出:

item    item    item        
item    item    item    
item    item    item    
item    item    item    
...

我希望输出分布在三列中,即。在 table 中从左到右循环,然后在 3 项之后开始新的一行。

您可以使用 divisibleby 测试。

{% for i in sales %}
  {% if loop.index0 is divisibleby(3) %}
  <tr>
  {% endif %}
     <td>{{i}}</td>
  {% if loop.index is divisibleby(3) %}
  </tr>
  {% endif %}
{% endfor %}

您可以使用batch

>>> import jinja2
>>> t = jinja2.Template("{% for i in items|batch(3) %}{{i}}{% endfor %}")
>>> items = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
>>> print t.render(items=items)
>>> ['1', '2', '3']['4', '5', '6']['7', '8', '9']