flask-login登录属性获取问题?

我在使用flask-login进行登录管理,使用的是数据库模型里面的属性做标识符,以下为我的登录回调函数
image.png

代码片段

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这个字段的
image.png
代码片段

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')})

报错截图
image.png

阅读 2.6k
2 个回答
from flask_login import UserMixin
from 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嘛

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏