【问题标题】:Creating a user in Google App Engine and migrations the easy way在 Google App Engine 中创建用户并轻松迁移
【发布时间】:2016-09-17 11:55:09
【问题描述】:

我对 GAE 有点陌生,所以我想问一下,你如何为博客这样微不足道的东西创建用户模型。

到目前为止,这就是我得到的全部:

class User(db.Model):  # Todo create a user model, that works with your login page
    username = db.UserProperty()
    password = db.StringProperty()

但这看起来很原始。一个人将如何在谷歌应用引擎中创建一个用户,最好的做法是创建这样一个唯一性是一个重要因素的领域。 此外,您如何将用户链接到博客文章,因为谷歌数据存储中不允许链接。 最后是否有一个应用程序可以管理您的所有迁移?像 GAE 的南方?好像有办法迁移,但是涉及到boiler-plate code很多。

另外,我来自 django 背景,所以我发现这一切有点违反直觉,因为这不是关系数据库。

【问题讨论】:

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


    【解决方案1】:

    您的 User 类现在很好,您可以在开发过程中根据需要向模型添加字段。但是你应该使用ndb 而不是dbndb 处理更多功能(如自动缓存)。您可以找到更多详细信息in the documentation

    如果您想了解更高级的用户或数据存储模型,可以查看gae-boilerplate,它已经处理了用户登录和注册(甚至来自 facebook/twitter/...)。自述文件有很好的记录: https://github.com/coto/gae-boilerplate

    您可以在模型中实现某种关系,方法是使用 KeyProperty() 或在创建父实体时设置父实体。例如:

    class BlogPost(ndb.Model):
        title = ndb.StringProperty()
        content = ndb.TextProperty()
        timestamp = ndb.DateTimeProperty(auto_add_now=True)
    
    # Then you can specify a parent in the constructor (where user is a User entity)
    blog_post = BlogPost(parent=user)
    blog_post.title = 'Post title'
    blog_post.content = 'Post content'
    blog_post.put()
    

    然后使用Ancestor queries 检索用户发布的所有博客文章。

    【讨论】:

    • 您介意添加一点代码来说明如何在此构造函数中添加父级吗?这将使答案全面。抱歉再次询问。
    • 所有代码都在这里,user 是一个用户实体,您可以从查询中检索它。如果您不知道该怎么做,我建议您阅读有关 ndb 查询的文档。
    猜你喜欢
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多