Использование Flask Mega Tutorial Я пытаюсь изучить Flask. В part 5 of the tutorial Теперь я создаю страницу профиля, в которой пользователь должен войти в систему.Python Flask: AttributeError: объект «NoneType» не имеет атрибута 'is_active'
Поскольку я использую ORI peewee вместо SQLAlchemy, я корректирую код здесь и там, но для этого случая я не делаю Думаю, это важно. Теперь я вхожу в систему, используя мою учетную запись Google (openID) и нажимаю ошибку AttributeError: 'NoneType' object has no attribute 'is_active'
. Ошибка возникает в конце этой функции в строке, которая говорит login_user(user, remember = remember_me)
.
@oid.after_login
def after_login(resp):
if resp.email is None or resp.email == "":
flash('Invalid login. Please try again.')
return redirect(url_for('login'))
user = User.select().where(User.email == resp.email).first()
if user is None:
nickname = resp.nickname
if nickname is None or nickname == "":
nickname = resp.email.split('@')[0]
User(nickname = nickname, email = resp.email, role = models.ROLE_USER, last_seen = datetime.utcnow()).save()
remember_me = False
if 'remember_me' in session:
remember_me = session['remember_me']
session.pop('remember_me', None)
login_user(user, remember = remember_me)
return redirect(request.args.get('next') or url_for('index'))
Поскольку этот фрагмент кода работал раньше, я не знаю, почему это теперь дает ошибку. is_active
метод (не приписывать) происходит в классе пользователя, который выглядит следующим образом:
class User(db.Model):
nickname = CharField()
email = CharField(max_length=150)
role = IntegerField(default = ROLE_USER)
about_me = TextField(null = True, max_length=140)
last_seen = DateTimeField()
def is_authenticated(self):
return True
def is_active(self):
return True
def is_anonymous(self):
return False
def get_id(self):
return self.id
def avatar(self, size):
return 'http://www.gravatar.com/avatar/' + md5(self.email).hexdigest() + '?d=mm&s=' + str(size)
def __repr__(self):
return '<User %r>' % (self.nickname)
Но я вроде потерял, почему это было бы бросить мне ошибку. Поэтому мой вопрос действительно: кто-нибудь знает, что я здесь делаю неправильно?
Любые советы приветствуются, так как я полностью потерял ..
Вы не должны использовать login_user, если пользователь не является None. И когда вы создаете пользователя, этот вновь созданный пользователь никогда не назначается пользовательской переменной – gawel
Глупо меня. Благодаря! Я учусь день ото дня .. :) – kramer65