显示评论Jinja2-Python

时间:2013-01-24 14:17:54

标签: python google-app-engine google-cloud-datastore jinja2

我正在使用Python和Jinja2在Google App Engine中撰写博客。我的博客帖子有一个GQL表,所有评论都有一个。公用表中的每条记录都有一个blogpost_id列,以便我知道它们链接到哪个博客帖子。我使用查询'SELECT * from BLOGPOSTS'并将其传递给我的渲染函数。然后在我的HTML模板中有一个for循环打印出我的所有博客帖子。这非常顺利。在blogpost的永久链接中,打印注释很容易,因为我知道blogpost_id所以我可以查询注释表并将其打印出来。

然而,在首页我想显示它下面每个博客帖子的前两个评论。但我无法想出一个解决方案,用于在我的首页上的博客帖子下面打印评论,因为我不知道如何将特定博客帖子的评论传递给我的渲染功能。这有解决方案吗?

1 个答案:

答案 0 :(得分:0)

为什么不将包含博客帖子的GQL查询结果传递给您的模板,为什么不传递将博客帖子映射到它的两个最新评论的词典列表?

这样的事情可能有用(虽然可能不是最有效的方法):

posts = GqlQuery("SELECT * from BLOGPOSTS")
posts_and_comments = []
for post in posts:
    two_comments = GqlQuery("SELECT * from COMMENTS WHERE blogpost_id = :1 ORDER BY age LIMIT 2", post.blogpost_id)
    current_post = {post: two_comments}
    posts_and_comments.append(current_post)

然后你可以将posts_and_comments传递给你的模板,并以你喜欢的方式迭代它。

此外,不是通过blogpost_id进行检查,您可能需要查看ancestor queries instead,并将每条评论的祖先设置为其父帖子。