Как отслеживать текущего пользователя в флэше?

Я пытаюсь использовать текущего пользователя в моем представлении из флэша-входа. Поэтому я попытался g object

Я назначаю flask.ext.login.current_user в объект g

 @pot.before_request def load_users(): g.user = current_user.username 

Он работает, если пользователь прав. Но когда я регистрируюсь или регистрирую, как с неправильными учетными данными, я получаю эту ошибку

AttributeError: 'AnonymousUserMixin' object has no attribute 'username'

Пожалуйста, расскажите мне, где я ошибаюсь …

3 Solutions collect form web for “Как отслеживать текущего пользователя в флэше?”

Спасибо за ваш ответ @Joe и @pjnola, так как вы все предложили мне обратиться к документам с флягами

Я обнаружил, что мы можем настроить анонимный пользовательский класс, поэтому я настроен для моего требования,

Anonymous class

 #!/usr/bin/python #flask-login anonymous user class from flask.ext.login import AnonymousUserMixin class Anonymous(AnonymousUserMixin): def __init__(self): self.username = 'Guest' 

Затем добавили этот класс в anonymous_user

login_manager.anonymous_user = Anonymous

Из этого он смог получить имя пользователя, если это был анонимный запрос.

У AnonymousUserMixin нет атрибута имени пользователя. Вам необходимо перезаписать объект и вызвать mixin. Посмотрите на LoginManager.anonymous_user, который является объектом, который используется, когда ни один пользователь не вошел в систему.

Вы также должны получить пользователя откуда-то. Нет смысла хранить имя пользователя в g поскольку вы могли бы просто использовать current_user.username.

Если вы хотите получить имя пользователя, вам также понадобится

 if current_user.is_authenticated(): g.user = current_user.username 

Это потребует, чтобы пользовательский объект имел свойство, называемое именем пользователя. Существует множество способов настройки использования Flask-Logins

Я предлагаю перечитать документы и взглянуть на исходный код:

https://github.com/maxcountryman/flask-login/blob/master/flask_login.py

Джо

Ну, в сообщении об ошибке говорится все. Пользователь не зарегистрирован, поэтому current_user возвращает AnonymousUserMixin . AnonymousUserMixin реализует интерфейс, описанный здесь: http://flask-login.readthedocs.org/en/latest/#your-user-class (который не содержит свойства username ). Попробуйте что-то вроде этого:

 @pot.before_request def load_users(): if current_user.is_authenticated(): g.user = current_user.get_id() # return username in get_id() else: g.user = None # or 'some fake value', whatever 

Очевидно, что остальная часть вашего кода должна иметь дело с возможностью того, что g.user не будет ссылаться на реального пользователя.

  • Может ли json.loads игнорировать запятую?
  • python, UnicodeEncodeError, преобразование unicode в ascii
  • Укажите формат входных аргументов argparse python
  • Использование Mechanize (Python) для заполнения формы
  • к какой группе относится обратная ссылка, когда используется операция sub ()?
  • почему python генерирует половину пространства при печати из строки или списка?
  • Замените строку подстановочным знаком в файле .txt с помощью Python
  • Невозможно записать в файл с использованием многопроцессорности Python
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.