如何在Django/Python中按行循环三个列?

9 投票
2 回答
7412 浏览
提问于 2025-04-16 08:08

我想在我的循环中每行显示三列数据。希望我的结果看起来像下面这样:

<table>
<tr><td>VALUE1</td><td>VALUE2</td><td>VALUE3</td></tr>
<tr><td>VALUE4</td><<td>VALUE5</td><td>VALUE6</td></tr>
</table>

有人知道怎么做吗?

语法错误

在 / 的地方出现了 TemplateSyntaxError

'for' 循环的写法应该是 'for x in y' 这样的格式:for i in range(0, len(all_products_list), 3)

2 个回答

-2
<table>
{% for i in range(0, len(stuff), 3) %}
    <tr>
    {% for j in range(3) %}
        <td>{{ stuff[i+j] }}</td>
    {% endfor %}     
    </tr>
{% endfor %}
</table>

抱歉,我误解了问题。

23

这里有一个叫做divisibleby的标签。

所以你可以做一些(看起来不太好看的)事情,比如:

<table><tr>
{% for field in form %}
   <td>{{ field }}</td>
   {% if forloop.last %}
     </tr>
   {% else %}
     {% if forloop.counter|divisibleby:"3" %}
       </tr><tr>
     {% endif %}
   {% endif %}
{% endfor %}
</table>

另外,你可以给你的表单类添加一个叫做table_print的方法,这个方法会返回一个HTML字符串(用mark_safe包裹起来)。

撰写回答