Django模板每两次迭代跳过一行

时间:2014-09-06 00:51:35

标签: django django-templates

我有以下html结构:

<div class="row>
    <div class="box"></div>
    <div class="box"></div>
</div>

我在Django上使用分页功能每页传递6个项目。

如何使用行div包装每个带有div div的两个div div,我将如何迭代paginator生成的对象列表?

2 个答案:

答案 0 :(得分:4)

您可以使用模板中的forloop.counter

{% for obj in obj_list %}
    {% if forloop.counter0|divisibleby:2 %}
    <div class="row">
    {% endif %}
        <div class="box"></div>
        <div class="box"></div>
    {% if forloop.counter|divisibleby:2 %}
    </div>
    {% endif %}

{% else %}
    Nothing to show
{% endfor %}

如果列表中有奇数个元素,那么它就不会有尾随div。我会让你自己弄清楚那个场景。 (这很简单)

forloop.counter0 can be found here的文档 divisibleby can be found here

的文档

答案 1 :(得分:0)

我同意karthikr的解决方案,但如果你有3件,则不会打印</div> ...

你必须添加一个forloop.last来处理这种情况:

{% for obj in obj_list %}
    {% if forloop.counter0|divisibleby:2 %}
    <div class="row">
    {% endif %}
        <div class="box"></div>
        <div class="box"></div>
    {% if forloop.counter|divisibleby:2 or forloop.last %}
    </div>
    {% endif %}

{% else %}
    Nothing to show
{% endfor %}