gpt4 book ai didi

python - AttributeError: 'SelectQuery' 对象没有属性 'is_active'

转载 作者:太空狗 更新时间:2023-10-30 00:40:53 26 4
gpt4 key购买 nike

我正在尝试按照 Flask Mega Tutorial 学习 Peewee ORM 与 Flask 的结合。 .在 part 5 of the tutorial我使用 OpenID 创建登录名。在克服了一堆障碍之后,我现在在下面一行粘贴的函数中得到一个 AttributeError: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)
if user.wrapped_count() == 0:
nickname = resp.nickname
if nickname is None or nickname == "":
nickname = resp.email.split('@')[0]
user = User(nickname = nickname, email = resp.email, role = models.ROLE_USER)
user.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 = TextField()
email = TextField()
role = IntegerField(default = ROLE_USER)

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 __repr__(self):
return '<User %r>' % (self.nickname)

虽然我不知道我在这里做错了什么。有人可以帮助我解决我在这里做错的事情吗?

欢迎所有提示!

最佳答案

如错误所示,user = User.select().where(User.email == resp.email) 返回一个 SelectQuery,而不是一个实例用户。您需要包含一个额外的方法调用来实际获取记录,类似于 .first()first 将返回 UserNone 的实例。

这将允许您稍微调整您的代码:

user = User.select().where(User.email == resp.email).first()
if not user: # or if user is None:
nickname = resp.nickname
...

关于python - AttributeError: 'SelectQuery' 对象没有属性 'is_active',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21139887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com