gpt4 book ai didi

python - flask-login:Exception: 没有为此 LoginManager 安装 user_loader。用 'LoginManager.user_loader' 装饰器添加一个

转载 作者:太空狗 更新时间:2023-10-30 02:02:39 25 4
gpt4 key购买 nike

我想使用 flask_login 来管理用户登录,但出现如下错误:

异常:没有为此 LoginManager 安装 user_loader。使用“LoginManager.user_loader”装饰器添加一个。

这是我的 models.py(PS:我使用 Flask peewee 来构建我的模型)

from peewee import *
from playhouse.fields import ManyToManyField
from .__init__ import login_manager
from flask_login import UserMixin, AnonymousUserMixin

db = SqliteDatabase('adminSystem.db')

class BaseModel(Model):
class Meta:
database = db

class User(UserMixin, BaseModel):
name = CharField()
email = CharField()
is_admin = BooleanField()
username = CharField()
passwd_hash = CharField()
teacher = ForeignKeyField('self', related_name='students', null=True)

#def is_authenticated(self):
# return True

#def is_active(self):
# return True

#def is_anonymous(self):
# return False

#def get_id(self):
# try:
# return unicode(self.id)
# except NameError:
# return str(self.id)

class Homework(BaseModel):
owner = ForeignKeyField(User, related_name='homeworks', null=True)
pub_datetime = DateTimeField()
connect = TextField()
homework_id =CharField()
file_url = CharField()

class Score(BaseModel):
homework_id = CharField()
stu_id = CharField()
grade = IntegerField()
file_url = CharField()

class AnonymousUser(AnonymousUserMixin):
def can(self, permissions):
return False

def is_administrator(self):
return False

@login_manager.user_loader
def load_user(userid):
try:
#: Flask Peewee used here to return the user object
return User.get(User.id==userid)
except User.DoesNotExist:
return None

这是我的 view.py 的一部分

from flask import render_template, url_for, redirect, request, g
from . import auth
from werkzeug.security import generate_password_hash, check_password_hash
from ..models import db, User, Homework, Score
from flask_login import login_user, logout_user, login_required, current_user

@auth.before_app_request
def before_request():
g.user = current_user

@auth.route('/login', methods=['POST', 'GET'])
def login():
if request.method == 'POST':
if request.form['role'] == 'teacher':
user = User.get(User.username == request.form['username'])
if check_password_hash(user.passwd_hash, request.form['password']):
login_user(user)
return redirect(url_for('main.post'))
return render_template('login.html')
elif request.form['role'] == 'student':
user = User.get(User.username == request.form['username'])
if check_password_hash(user.passwd_hash, request.form['password']):
login_user(user)
return redirect(url_for('main.show'))
return render_template('login.html')
return render_template('login.html')

还有一张我试过的照片

enter image description here

最佳答案

你可以放置这个方法

@login_manager.user_loader
def load_user(user_id):
return None

login_manager.init_app(app) 之后

关于python - flask-login:Exception: 没有为此 LoginManager 安装 user_loader。用 'LoginManager.user_loader' 装饰器添加一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39908552/

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