呈现按日期分组的帖子列表

时间:2015-07-26 10:17:45

标签: python flask jinja2 itertools

我的网站每天有多个帖子。我想要呈现帖子列表,但我希望按日期分组的帖子,而不是按日期排序,以便每个日期都有自己的帖子列表。

我将帖子列表发送到模板,post.posted_on是创建帖子的时间戳。如何呈现按日期分组的帖子?

1 个答案:

答案 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 %}