【问题标题】:How do you limit list objects template side, rather than view side你如何限制列表对象模板端,而不是视图端
【发布时间】:2011-04-23 21:15:11
【问题描述】:

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

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 个对象/项目之后。以及如何在模板中执行此操作。提前致谢。

【问题讨论】:

标签: django django-templates


【解决方案1】:

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

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

【讨论】:

  • 如果你有使用{% for object in user.objects.all %}的场景,你可以使用{% for object in user.objects.all|slice:":10" %}
  • 请给我django的切片文档链接。
  • 这与我上面的回答直接相关。
  • 我知道了@Daniel。我在 github django 存储库中搜索 slice,但我发现 slice_filter 不是 slice。
  • 为我工作。
【解决方案2】:

您想使用slice 模板过滤器

这是您的示例更改为使用它:

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

【讨论】:

  • 我知道我有点唠叨,但应该是:{{ new.title}}{{ new.body }}
  • 这是一个比公认答案更完整的代码示例,这是一个更有帮助的答案,所以我投票赞成并解释原因
猜你喜欢
  • 1970-01-01
  • 2011-09-25
  • 1970-01-01
  • 2013-06-06
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多