登录
首页 >  文章 >  python教程

Flask-Login 获取登录属性异常:如何解决 \'str\' object has no attribute \'id\' 和 current_user.name 为 None 的问题?

时间:2024-12-20 12:37:02 139浏览 收藏

学习文章要努力,但是不要急!今天的这篇文章《Flask-Login 获取登录属性异常:如何解决 \'str\' object has no attribute \'id\' 和 current_user.name 为 None 的问题?》将会介绍到等等知识点,如果你想深入学习文章,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

Flask-Login 获取登录属性异常:如何解决 \'str\' object has no attribute \'id\' 和 current_user.name 为 None 的问题?

flask-login获取登录属性异常

在使用flask-login管理登录时,遇到使用数据库模型属性作为标识符却报错attributeerror: 'str' object has no attribute 'id'以及current_user.name返回的属性为none的问题。

这可能是由于在初始化user类时未正确获取数据库模型属性。下面提供修改后的代码:

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

在修改后的代码中:

  • 创建了一个数据库会话,以访问数据库。
  • 使用查询获取用户id对应的用户。
  • 如果找到用户,则将其转换为user类并返回。

通过这些修改,可以正确获取数据库模型属性,从而解决报错和属性返回none的问题。

以上就是《Flask-Login 获取登录属性异常:如何解决 \'str\' object has no attribute \'id\' 和 current_user.name 为 None 的问题?》的详细内容,更多关于的资料请关注golang学习网公众号!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>