以下是我的模板目前的样子:
{% for message in messages %}
<p>{{ message.title }}</p>
<p>{{ message.content }}</p>
{% empty %}
<p>No messages</p>
{% endfor %}
工作正常。但问题是有时候有超过20条消息,所以我想先显示3,然后添加一个“更多”按钮,这将显示其余的JavaScript。之后我会处理JavaScritp部分,但目前我想在第三次迭代后打印“更多”链接。
最好的方法是什么?将变量初始化为0并将其递增+检查每次迭代?或者是否有一个特殊的标签,它给出了当前的迭代次数?
答案 0 :(得分: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%}