Jinja2 - 以x为单位渲染列表项

时间:2016-11-03 11:17:03

标签: python html flask jinja2

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

当前代码:

<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    
...

我希望输出分布在三列上,即。在表格中从左到右循环,然后在3个项目后开始一个新行。

2 个答案:

答案 0 :(得分:1)

您可以使用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 %}

答案 1 :(得分:1)

您可以使用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']