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

Stu*_*Stu 79 django django-templates

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

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

但是,如何在模板内而不是在视图内实现此目的?

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

    <ul>
     {% for new in news %}
      <li>
       <p>{{ news.title }}</p>
       <p>{{ news.body }}</p>
      </li>
     {% endfor %}
    </ul>
Run Code Online (Sandbox Code Playgroud)

我怎么打破循环,比如在第一个3个物品/物品之后.我如何在模板中完成它.提前致谢.

Dan*_*man 170

还有一个slice,你可以在模板中使用的过滤器.这与在视图中切片完全相同.

{% for new in news|slice:":10" %}
Run Code Online (Sandbox Code Playgroud)

  • 如果您在使用 `{% for object in user.objects.all %}` 的情况下,您可以使用 `{% for object in user.objects.all|slice:":10" %}` (2认同)

小智 12

您想使用切片模板过滤器

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

<ul>
{% for new in news|slice:":3" %}
<li>
<p>{{ new.title }}</p>
<p>{{ new.body }}</p>
</li>
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)