2013-06-23 4 views
1

Я немного новичок в GAE, поэтому я хотел спросить, как создать пользовательскую модель для чего-то столь же тривиального, как блог.Создание пользователя в Google App Engine и миграции простой способ

Так далеко, это все, что я получил:

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

Но это выглядит очень примитивно. Как можно было бы создать пользователя в движке Google, как в лучшем случае, о создании таких полей, где уникальность является важным фактором. Также, как бы вы связали пользователя с сообщением в блоге, поскольку ссылки в хранилище данных Google не разрешены. Наконец-то есть приложение, которое управляет всеми вашими миграциями? Как юг для GAE? Кажется, есть способ мигрировать, но это связано с большим количеством boiler-plate code.

Кроме того, я исхожу из фона django, поэтому я нахожу все это немного контр-интуитивным, поскольку это не реляционная база данных.

ответ

2

Ваш класс User прекрасен, теперь вы можете добавлять поля в свою модель по мере необходимости во время разработки. Но вы должны использовать ndb, а не db. ndb обрабатывает гораздо больше функций (например, автоматическое кэширование). Вы можете найти более подробную информацию in the documentation.

Если вы хотите изучить более продвинутые модели пользователей или хранилища данных, вы можете посмотреть gae-boilerplate, который уже обрабатывает вход пользователя и регистрацию (даже с facebook/twitter/...). README очень хорошо документирован: 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 получить все сообщения в блоге, опубликованные пользователем.

+0

Не могли бы вы добавить немного кода о том, как добавить родителя в этот конструктор? Это сделает ответ всеобъемлющим. Извините, что попросил еще раз. –

+0

Весь код здесь, 'user' - это пользовательский объект, который вы можете получить из запроса. Если вы не знаете, как это сделать, я предлагаю вам прочитать документацию о ndb-запросах. – Dalmas