在一定数量的变量之后更改列表输出

时间:2014-09-04 06:06:32

标签: python django list django-templates

我有一个清单:

c = [1,2,3,4,5,6,7,8]

在我的模板中,我想按如下方式输出:

<table>
  <tr>
    <td>1</td>
    <td>2</td>
    <td>...</td>
  </tr>
</table>

<table>
  <tr>
    <td>5</td>
    <td>...</td>
    <td>8</td>
  </tr>
</table>

这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:2)

如果您想使其更通用,您还可以使用内置的divisibleby代码

{% for value in c %}

    {% if forloop.counter0|divisibleby:cut_off %}
        <table>
            <tr>
    {% endif %}

    <td>{{value}}</td>

    {% if forloop.counter|divisibleby:cut_off %}
            </tr>
        </table>
    {% endif %}

{% endfor %}

其中c是列表,cut_off是切片编号(例如问题中为4)。这些变量应该被发送到您视图中的模板。

答案 1 :(得分:1)

您可以使用slice模板过滤器:

<table>
  <tr>
    {% for value in c|slice:":4" %}
        <td>{{ value }}</td>
    {% endfor %}
  </tr>
</table>

<table>
  <tr>
    {% for value in c|slice:"4:" %}
        <td>{{ value }}</td>
    {% endfor %}
  </tr>
</table>

假设在模板上下文中传递了c

slice基本上遵循通常的python slicing syntax

>>> c = [1,2,3,4,5,6,7,8]
>>> c[:4]
[1, 2, 3, 4]
>>> c[4:]
[5, 6, 7, 8]