Flask-Login登录报错AttributeError: type object 'User' has no attribute 'get'求助
问题根因
Flask-Login 依赖 @login_manager.user_loader 装饰的回调函数,从 Session 存储的用户ID加载对应的用户对象。从报错回溯可以看到,你的load_user回调中调用了User.get(user_id),但 Flask-SQLAlchemy 的模型默认不存在get类方法,因此触发属性错误。
解决方案
在你的代码中添加/修改user_loader回调函数即可,函数位置建议放在User类定义完成后、路由定义之前,修改后的代码如下:
@login_manager.user_loader def load_user(user_id): # 替换原来的User.get(user_id)为SQLAlchemy的标准查询写法 # 因为session中存储的user_id为字符串类型,转为int匹配id字段的整数类型 return User.query.get(int(user_id))
修改完成后重新启动服务即可解决该报错。
额外可优化点
你定义的LoginForm类中,密码输入框的placeholder误写为了Username,可以改为Password避免前端显示歧义。
内容的提问来源于stack exchange,提问作者Christophe Chouinard
相关产品推荐
相关产品推荐

