如何返回模板中的行数

时间:2010-05-20 15:36:31

标签: django django-templates django-views

在我看来,我会返回一个博客的所有帖子:

    posts = Post.objects.filter(blog=blog)

并将其传递给上下文。

但是..我怎样才能获得模板中的帖子数量?

这是我的模板:

 <h1>Number of posts: {{ ??? }}  </h1>

 {% for post in posts %}

 {{ post.title }}

 {{ post.body }}

 {% endfor %}

2 个答案:

答案 0 :(得分:7)

 <h1>Number of posts: {{ posts.count }}  </h1>

实际上,在这个非常具体的案例中,使用length模板过滤器 - 只调用len() - 会更有效率。这是因为在尚未评估的查询集上调用.count()会导致它返回数据库以执行SELECT COUNT,而len()会强制对查询集进行求值。

显然,如果你不打算在那里评估完整的查询集,那么前者通常会更有效率。但是在这里,我们将立即遍历整个查询集,因此执行count只会引入额外的不必要的数据库调用。

所有这一切的结果是这在这里更好:

 <h1>Number of posts: {{ posts|length }}  </h1>

答案 1 :(得分:2)

查看length filter