Я успешно с webapp2 могу аутентифицировать и входить / выходить из системы, и у меня есть декоратор, чтобы знать, вошел ли пользователь в систему, и это работает:
class MyPageHandler(NewBaseHandler):
"""
Only accessible to users that are logged in
"""
@user_required
def get(self):
user = self.auth.get_user_by_session()
self.render_template('mypage.htm', {'user': self.auth.get_user_by_session()})
Теперь я хочу добавить что-то базовое в качестве имени пользователяи я подозреваю, что мне, возможно, не придется создавать подкласс модели User, предоставляемой с webapp2_extras, поскольку это модель Expando.Не могли бы вы сказать мне, как добавить имя пользователя или обновить пользователя с именем пользователя?Я не пробовал, но мне кажется, что я могу отобразить auth_id, но это не то же самое, что имя пользователя?
Спасибо
Обновление
Кажется, что модель Userмодель для расширения, вы просто «добавляете свойства», например, при создании пользователя:
username = self.request.POST.get('username')
password = self.request.POST.get('password')
# Passing password_raw=password so password will be hashed
# Returns a tuple, where first value is BOOL. If True ok, If False no new user is created
user = self.auth.store.user_model.create_user(username, password_raw=password)
user.name = username
Я не провел тщательного тестирования приведенного выше кода, но кажется, что с webapp2 нам не нужно создавать подклассыПользовательский класс для получения функциональности.
Решение / Обходное решение
class SecureRequestHandler(BaseHandler):
"""
Only accessible to users that are logged in
"""
@user_required
def get(self, **kwargs):
a = self.app.config.get('foo')
auser = self.auth.get_user_by_session()
userid = auser['user_id']
user = auth_models.User.get_by_id(auser['user_id'])
try:
return "Secure zone %s <a href='%s'>Logout</a>" % (user.name, self.auth_config['logout_url'])
except (AttributeError, KeyError), e:
return "Secure zone"