如何返回模板中的行数

xRo*_*bot 1 django django-templates django-views

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

    posts = Post.objects.filter(blog=blog)
Run Code Online (Sandbox Code Playgroud)

并将其传递给上下文.

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

这是我的模板:

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

 {% for post in posts %}

 {{ post.title }}

 {{ post.body }}

 {% endfor %}
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 7

 <h1>Number of posts: {{ posts.count }}  </h1>
Run Code Online (Sandbox Code Playgroud)

实际上,在这个非常具体的情况下,使用length模板过滤器 - 只是调用len()- 会更有效.这是因为调用.count()尚未评估的查询集会导致它返回数据库执行操作SELECT COUNT,而len()强制查询查询集.

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

所以这一切的结果就是这里更好:

 <h1>Number of posts: {{ posts|length }}  </h1>
Run Code Online (Sandbox Code Playgroud)