我正在尝试使用flask创建一个大学系统,但我在登录系统上有一个问题,基本上我有两个班级:教师班和学生班。问题是我无法找到一种方法让登录管理器同时处理两个班级的登录,只有一个班级可以登录,当另一个班级尝试登录时,请将我作为班级登录。我的意思是,当我将登录管理器设置为接受学生它与学生一起工作,但当我尝试以教师身份登录时,它会在学生表而不是教师表中搜索,我不知道我是否正确解释了它,但我希望代码片段能够提供帮助
这是模特
attend = db.Table('attend',
db.Column('teacher_id',db.Integer,db.ForeignKey('teacher.id')),
db.Column('student_id', db.Integer, db.ForeignKey('student.id'))
)
class Teacher(db.Model,UserMixin):
id = db.Column(db.Integer, primary_key=True)
name=db.Column(db.String(60),nullable=False)
email=db.Column(db.String(100),nullable=False,unique=True)
password=db.Column(db.String(60),nullable=False)
department=db.Column(db.String(50),nullable=False)
students=db.relationship('Student',secondary=attend,backref='students',lazy='dynamic')
def type_auth(self):
return True
def __repr__(self) -> str:
return f'name:{self.name} email:{self.email} department:{self.department}'
class Student(db.Model,UserMixin):
id = db.Column(db.Integer, primary_key=True)
name=db.Column(db.String(60),nullable=False)
email = db.Column(db.String(100), nullable=False, unique=True)
password = db.Column(db.String(60), nullable=False)
year=db.Column(db.Integer,nullable=False)
grades = db.relationship('Grades', backref='Rates', lazy='dynamic')
def type_auth(self):
return False
def __repr__(self) -> str:
return f'name:{self.name} email:{self.email} year:{self.year}'
这个登录管理器
def create_app():
app=Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI']=f'sqlite:///{DB_NAME}'
app.config['SECERT_KEY'] = '1853d2c8983cff3b'
app.config['FLASK_ADMIN_SWITCH']='Cyborg'
db.init_app(app)
from .auth import auth
from .routes import routes
app.register_blueprint(auth,prefix_url='/')
app.register_blueprint(routes,prefix_url='/')
login_manger=LoginManager()
login_manger.login_view='auth.login'
login_manger.login_message_category='info'
login_manger.init_app(app)
@login_manger.user_loader
def user_loader(id):
#i need help here
return app