flask-login登录属性获取问题?
我在使用flask-login进行登录管理,使用的是数据库模型里面的属性做标识符,以下为我的登录回调函数
代码片段
class User(UserMixin): def __init__(self,user_id):
self.id = user_id.id
self.name = user_id.name
def get_id(self):
return str(self.id)
@super_login.user_loader
def load_user(user_id):
return User(user_id)
以下为我的登录过程,我在表单验证成功后将数据库模型传入User这个类当中,想通过数据库.字段名去获取对应的用户id,但是为什么总是提示AttributeError: 'str' object has no attribute 'id'这个报错呢?同时为什么我使用current_user.name返回的属性也是None呢,数据库里面是有id这个字段的
代码片段
user_obj = model_login(name = username2) user = User(user_obj)
login_user(user,remember = True)
return jsonify({'code': 200, 'message': '登录成功', 'data': url_for('software_click.software_base')})
报错截图
回答:
from flask_login import UserMixinfrom sqlalchemy import Column, Integer, String
from database import SessionLocal, engine, Base
class User(UserMixin, Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
name = Column(String, unique=True, index=True)
password = Column(String)
def __init__(self, user_id):
self.id = user_id.id
self.name = user_id.name
def get_id(self):
return str(self.id)
@super_login.user_loader
def load_user(user_id):
# 创建数据库会话
db = SessionLocal()
user = db.query(User).get(user_id)
if user:
return User(user)
return None
回答:
self.id = user_id.id
这一步不应该是self.id = user_id嘛
以上是 flask-login登录属性获取问题? 的全部内容, 来源链接: utcz.com/p/938953.html