在我看來,我回一個博客的所有帖子:如何返回的行數在模板
posts = Post.objects.filter(blog=blog)
,並把它傳遞給上下文。
但是..如何獲得模板中的帖子數量?
這是我的模板:
<h1>Number of posts: {{ ??? }} </h1>
{% for post in posts %}
{{ post.title }}
{{ post.body }}
{% endfor %}
在我看來,我回一個博客的所有帖子:如何返回的行數在模板
posts = Post.objects.filter(blog=blog)
,並把它傳遞給上下文。
但是..如何獲得模板中的帖子數量?
這是我的模板:
<h1>Number of posts: {{ ??? }} </h1>
{% for post in posts %}
{{ post.title }}
{{ post.body }}
{% endfor %}
<h1>Number of posts: {{ posts.count }} </h1>
實際上,在這種非常特殊的情況下,使用length
模板過濾器 - 這只是調用len()
- 會更有效。這是因爲在未評估的查詢集上調用.count()
會導致它返回到數據庫以執行SELECT COUNT
,而len()
強制對查詢集進行評估。
顯然,如果您不打算評估完整的查詢集,那麼前者通常會更高效。但是在這裏,我們將立即遍歷整個查詢集,因此執行count
只會引入額外的不必要的數據庫調用。
所以一切的結果是,這是更好地在這裏:
<h1>Number of posts: {{ posts|length }} </h1>
退房的length
filter。
+1清楚地解釋.count()和長度過濾器之間的區別 – 2010-05-21 18:26:36