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

时间:2010-10-11 15:27:02

标签: django django-templates

限制对象的方法之一是为像

这样的函数添加限制
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>

如何在第一个3个物体/物品之后打破循环。我如何在模板中完成它。提前谢谢。

2 个答案:

答案 0 :(得分:163)

您可以在模板中使用slice过滤器。这与在视图中切片完全相同。

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

答案 1 :(得分:12)

您想使用slice模板过滤器

以下是您更改使用它的示例:

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