如何在实体中使用谷歌用户ID - python appengine

发布于 2024-12-15 06:09:27 字数 612 浏览 2 评论 0原文

我创建一个像这样的实体:

company = dbDatafile(usOwner = user)
company.name = self.request.get("name")
company.put()

其中 user 是 Google 用户帐户。现在,当我尝试搜索该用户时,例如:

datafiles = dbDatafile.gql("WHERE usOwner = '%s'" % user.user_id())

分配给 jinja2 模板 var:

template_values = {
    'datafiles': datafiles
}

并输出到 html:

{% for datafile in datafiles %}
    >>>{{ datafile.name }}         chevrons to indicate any looping
{% endfor %}

我没有得到任何输出。

数据位于管理仪表板中,但我无法访问它。有什么想法吗?

谢谢

I create an entity like so:

company = dbDatafile(usOwner = user)
company.name = self.request.get("name")
company.put()

where user is the Google User account. Now when I try to search on that user like:

datafiles = dbDatafile.gql("WHERE usOwner = '%s'" % user.user_id())

assign to a jinja2 template var:

template_values = {
    'datafiles': datafiles
}

and output to html:

{% for datafile in datafiles %}
    >>>{{ datafile.name }}         chevrons to indicate any looping
{% endfor %}

i get no output.

The data is there in the admin dashboard but I can't access it. Any ideas?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

油饼 2024-12-22 06:09:27

如果 usOwner 是 UserProperty,则需要在 GQL 中使用 USER()

datafiles = dbDatafile.gql("WHERE usOwner = USER(:1)", user.email())

还要记住始终使用占位符,而不是字符串插值 - 只是因为它不是 SQL,不这意味着它不容易受到注射。

If usOwner is a UserProperty, you need to use USER() in GQL:

datafiles = dbDatafile.gql("WHERE usOwner = USER(:1)", user.email())

Also remember always to use placeholders, not string interpolation - just because it's not SQL, doesn't mean it's not vulnerable to injection.

栖竹 2024-12-22 06:09:27

好吧,这并不是严格回答我的问题,而是一个小小的解决方法。我决定使用父功能,因此我的代码现在如下所示:

company = dbDatafile(parent=db.Key.from_path('user', user.user_id()))
company.name = self.request.get("name")
company.usOwner = user
company.put()


datafiles = dbDatafile.gql("WHERE ancestor IS '%s'" % db.Key.from_path('user', user.user_id()))

不确定这是否理想,但它可以工作并且与高复制数据存储兼容。

OK this isn't strictly answering my question but a slight workaround. I decided to use the parent feature so my code now looks like this:

company = dbDatafile(parent=db.Key.from_path('user', user.user_id()))
company.name = self.request.get("name")
company.usOwner = user
company.put()


datafiles = dbDatafile.gql("WHERE ancestor IS '%s'" % db.Key.from_path('user', user.user_id()))

Not sure if this is ideal but it works and is compatible with the High Replication datastore.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文