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)
<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)
| 归档时间: |
|
| 查看次数: |
2250 次 |
| 最近记录: |