【问题标题】:Fetch a GAE entity from Jinja with a Key使用 Key 从 Jinja 获取 GAE 实体
【发布时间】:2013-03-23 19:06:49
【问题描述】:

我在 App Engine 中创建了一个博客,我目前正在为博客文章添加评论支持。 我已经创建了一个 db.ListProperty(db.Key) 来为发布到该特定帖子的每条评论存储一个密钥。

问题是,我试图在我的模板中执行此操作,但我无法在此处使用 db.get。

例如,能够从 jinja 执行“Comment.get(key)”之类的操作

您是否有任何其他解决方案可以在我的模板中执行此操作,或者我是否必须将列出我的博客帖子的 for 函数从我的模板中移开并将其作为 kwarg 传递?

谢谢

【问题讨论】:

  • 您绝对应该在模板之外执行此操作。如何将它添加到列表中,将其传递给 Jinja,然后对其进行迭代。或者你可以像这样扩展BaseModel 的函数:def asDict(self): d={"name" = self.name, "comments"= self.comments} return d

标签: python google-app-engine python-2.7 jinja2


【解决方案1】:

花了一段时间,需要重新思考,但我修好了。 我将它从模板中移开并创建了一个 fetch cmets 函数,该函数将获取的帖子作为输入并输出 cmets 列表。然后我只是把它作为一个 kwarg ofc 传递。 看起来是这样的

def get_comments(posts):
    postids = []
    for post in posts:
        postids.append(post.key().id())
    comments = {}
    for i in postids:
        comments[i] = Comment.all().ancestor(Blogpost.get_by_id(i))
    return comments

在我的 jinja 模板中,我做了一个简单的 for 循环,看起来像这样

{% for comment in comments[entry.key().id()] %}

可能不是最好的方法,但体面且效果很好

【讨论】:

    猜你喜欢
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 2014-05-27
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 2018-01-13
    相关资源
    最近更新 更多