1

这是我的模板当前的样子:

{% for message in messages %}
    <p>{{ message.title }}</p>
    <p>{{ message.content }}</p>
{% empty %}
    <p>No messages</p>
{% endfor %}

它工作正常。但问题是有时有超过 20 条消息,所以我只想先显示 3 条,然后添加一个“更多”按钮,它将在 JavaScript 中显示其余的。之后我会处理 JavaScritp 部分,但目前我想在第三次迭代后打印链接“更多”。

做这个的最好方式是什么?将变量初始化为0并将其递增+在每次迭代中检查?或者是否有一个特殊的标签可以给出当前的迭代次数?

4

1 回答 1

1

您得到forloop.counter变量来指示迭代次数,您可以将其用作

{% for message in messages %}
    {%if forloop.counter < 4 %}
        <p>{{ message.title }}</p>
        <p>{{ message.content }}</p>
    {%endif%}
{% empty %}
    <p>No messages</p>
{% endfor %}
{% if messages|length > 3 %}
    Link for more 
{%endif%}

另一种方法可以将列表分割为 3 个元素并仅对其进行迭代。

{% for message in messages|slice:":3" %}
        <p>{{ message.title }}</p>
        <p>{{ message.content }}</p>
{% empty %}
    <p>No messages</p>
{% endfor %}
{% if messages|length > 3 %}
    Link for more 
{%endif%}
于 2013-10-14T07:27:50.497 回答