我的网站每天有多个帖子。我想要呈现帖子列表,但我希望按日期分组的帖子,而不是按日期排序,以便每个日期都有自己的帖子列表。
我将帖子列表发送到模板,post.posted_on
是创建帖子的时间戳。如何呈现按日期分组的帖子?
答案 0 :(得分:1)
您可以使用itertools.groupby
按日对帖子进行分组。按posted_on
降序对帖子进行排序,然后使用groupby
和当天的密钥。迭代这些组,并迭代每个组中的帖子,以构建包含帖子列表的部分。
from itertools import groupby
# sort posts by date descending first
# should be done with database query, but here's how otherwise
posts = sorted(posts, key=lambda: post.posted_on, reverse=True)
by_date = groupby(posts, key=post.posted_on.date)
return render_template('posts.html', by_date=by_date)
{% for date, group in by_date %}<div>
<p>{{ date.isoformat() }}</p>
{% for post in group %}<div>
{{ post.title }}
...
</div>{% endfor %}
</div>{% endfor %}