我对GAE有点陌生,所以我想问一下,如何为像博客这样琐碎的事物创建用户模型。
到目前为止,这就是我得到的:
class User(db.Model): # Todo create a user model, that works with your login page
username = db.UserProperty()
password = db.StringProperty()
但这看起来很原始。 最好的做法是,如何在Google App Engine中创建用户,以创建其中唯一性是重要因素的字段。 另外,由于Google数据存储区中不允许链接,因此您如何将用户链接到博客文章。 最后,有一个可以管理您所有迁移的应用程序吗? 喜欢GAE的南部吗? 似乎有一种迁移的方法,但是它涉及大量的样板代码 。
另外,我来自django的背景,所以我发现所有这些都有点违反直觉,因为这不是关系数据库。
您的User
类目前还不错,您可以在开发过程中根据需要将字段添加到模型中。 但是您应该使用ndb
而不是db
。 ndb
处理更多功能(例如自动缓存)。 您可以在文档中找到更多详细信息。
如果您想学习更高级的用户或数据存储模型,可以查看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查询检索用户发布的所有博客文章。