tengo un problema con el inicio de sesión en el matraz, el cargador de usuario no funciona
Exception: Missing user_loader or request_loader. Refer to http://flask-login.readthedocs.io/#how-it-works for more info.y cuando intento importar el modelo de usuario en shell:
AttributeError: 'LoginManager' object has no attribute 'load_user'Este es mi código:
-------------------app/__init__.py---------------- from app.config import Config from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_login import LoginManager #create app app = Flask(__name__) app.config.from_object(Config) #init pckages db = SQLAlchemy(app) login_manager = LoginManager(app) #import Blueprints from app.blueprints.user.routes import user from app.blueprints.dashboard.routes import dashboard #register Blueprints app.register_blueprint(user) app.register_blueprint(dashboard) ------------------------------app.py------------------------------- from app import app if __name__ == "__main__": app.run(debug=True) ------------------------------user model------------------------------------ from app import db, login_manager from flask_login import UserMixin @login_manager.load_user def load_user(user): return User.get(user) class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), unique=True, nullable=False) email = db.Column(db.String(20), unique=True, nullable=False) avatar = db.Column(db.String(50), default="default.jpg") password = db.Column(db.String(60), nullable=False) def __repr__(self): return self.usernameEl decorador debe ser
@login_manager.user_loader no load_user
Puede realizar una ligera modificación en su modelo de user actual. Tal como está actualmente, usted tiene:
@login_manager.load_user def load_user(user): return User.get(user)Considera esto:
LoginManager desde flask_login from flask_login import LoginManager login = LoginManager(app)user de la siguiente manera: from flask_login import UserMixin from app import login # the variable from Flask-login @login.user_loader def load_user(id): return User.query.get(int(id)) # slightly modified such that the user is loaded based on the id in the db El cargador de usuarios está registrado con Flask-Login con el decorador @login.user_loader . La id que Flask-Login pasa a la función como argumento será una cadena, por lo que las bases de datos que usan identificaciones numéricas deben convertir la cadena en un número entero como se ve arriba.