gpt4 book ai didi

python - Flask + Wsgi + Docker - 尚未安装用户加载程序

转载 作者:行者123 更新时间:2023-12-01 07:15:47 25 4
gpt4 key购买 nike

在尝试运行一个在 docker 配置中使用 wsgi、nginx 的 Flask 项目时,我遇到以下错误:

尚未为此 LoginManager 安装 user_loader。引用https://flask-login.readthedocs.io/en/latest/#how-it-works了解更多信息。但是,如果不考虑登录,系统可以正常工作。

我该如何解决这个问题?

更多信息:

我的系统文件如下:

__init__.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
from flask_bcrypt import Bcrypt
from flask_login import LoginManager


app = Flask(__name__)
app.config.from_object('instance.config')
db = SQLAlchemy(app)
migrate = Migrate(app, db)
flask_bcrypt = Bcrypt(app)


manager = Manager(app)

控制用户 session 的代码:

from instance.config import SECRET_KEY_LOGIN
login_manager = LoginManager(app)
---------------------------------------------------------------------------
login.py

from flask import render_template, request, Blueprint, url_for, redirect
from flask_login import login_user, logout_user, current_user
from app import flask_bcrypt, login_manager
from app.models.login import LoginForm
from app.models.tabelas import Usuario

sign_in = Blueprint('sign_in', __name__)

@login_manager.user_loader
def load_user(id_usuario):
return Usuario.query.filter_by(id_usuario=id_usuario).first()

@login_manager.request_loader
def request_loader(_request):
# print ('using request loader')
# return "load_user_token(_request)"


@sign_in.route('/', methods=['GET', 'POST'])
@sign_in.route('/login', methods=['GET','POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('home'))
else:
error = None
form = LoginForm()

if request.method == 'POST':
if form.validate_on_submit():
usuario = Usuario.query.filter_by(ds_email = form.ds_email.data).first()
if usuario and flask_bcrypt.check_password_hash(usuario.ds_password, form.ds_password.data):
login_user(usuario)
return redirect(url_for('home'))
else:
error = 'Invalid Login .'
else:
error = 'Error'
print(form.errors)


return render_template('admin/login.html', form=form, error=error)

最佳答案

将此代码添加到您的 __init__.py 中的 login_manager 实例下方。

@login_manager.user_loader
def load_user(id):
return User.query.filter_by(user_id=id).first()

之后,您可以从login.py中删除@login_manager装饰器及其尊重函数

关于python - Flask + Wsgi + Docker - 尚未安装用户加载程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57976006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com