首页 > 解决方案 > AttributeError:“BaseQuery”对象没有属性“is_authenticated”

问题描述

@login_manager.user_loader
def load_user(user_id):
    return Users.query.filter_by(id=user_id)

这是我的用户加载器

@app.route('/login', methods=['POST','GET'])
def login():
    msg = ''
    if request.method == 'POST':
        username = request.form['user']
        password = request.form['pass']
        hashed_password = sha256(password.encode('utf-8')).hexdigest()
        user = Users.query.filter_by(username=username).first()
        if user:
            if user.hashed_password ==hashed_password:
                login_user(user, remember=True)
                return redirect(url_for('add'))
        else:
            msg = 'incorrect username or password'
    return render_template('login.html',msg=msg)

这是我的登录代码,我不知道这里出了什么问题,但我收到 AttributeError: 'BaseQuery' object has no attribute 'is_authenticated' 错误请帮忙

标签: pythonflask-login

解决方案


改变:

@login_manager.user_loader
def load_user(user_id):
    return Users.query.filter_by(id=user_id)

到:

@login_manager.user_loader
def load_user(user_id):
    return Users.query.filter_by(id=user_id).first()

如果您不使用first(),则返回类型将是 BaseQuery。


推荐阅读