如何限制列表对象模板端,而不是视图端

限制对象的方法之一是向这样的函数添加限制

def ten_objects():
obj = Model.objects.all()[0:10]  # limit to 10
return {'objects': obj}

但是,如何在模板内部而不是在视图内部实现这一点呢?

我知道您可以过滤模板中的对象并限制字符数,但是您实际上如何限制循环中显示的对象数量。通过模板。例如,下面的代码将循环遍历所有对象... ..。

    <ul>
{% for new in news %}
<li>
<p>{{ news.title }}</p>
<p>{{ news.body }}</p>
</li>
{% endfor %}
</ul>

我如何打破这个循环,比如在第三个对象/项目之后。以及如何在模板内部完成。先谢谢你。

35764 次浏览

There is a slice filter that you can use in templates. This works exactly the same as slicing within the view.

{% for new in news|slice:":10" %}

You want to use the slice template filter

Here's your example altered to use it:

<ul>
{% for new in news|slice:":3" %}
<li>
<p>\{\{ new.title }}</p>
<p>\{\{ new.body }}</p>
</li>
{% endfor %}
</ul>