from flask_admin import Admin,AdminIndexView from run import app from flask_admin.contrib.sqla import ModelView from flask import current_app,redirect,url_for,request from models import db,User,BanJi,KeCheng,TongGao,ChengJi class MyModelView(ModelView): def inaccessible_callback(self, name, **kwargs): # redirect to login page if user doesn't have access return redirect(url_for('login', next=request.url)) class MyUser(MyModelView): column_labels = dict( name='账号', email='邮箱', pwd='密码', ) column_searchable_list = ['name','家庭情况'] class MyBanJi(MyModelView): column_labels = dict( name='班级名', banzhuren='班主任', ) column_searchable_list = ['name'] class MyKeCheng(MyModelView): column_labels = dict( name= '课程名', beizhu = '课程每周安排时间' ) column_searchable_list = ['name'] admin = Admin(app=app, name='后台管理系统',template_mode='bootstrap3', base_template='admin/mybase.html',index_view=AdminIndexView( name='导航栏', template='admin/welcome.html', url='/admin' )) admin.add_view(MyBanJi(BanJi, db.session,name='班级信息管理')) admin.add_view(MyUser(User, db.session,name='用户信息管理')) admin.add_view(MyKeCheng(KeCheng, db.session,name='课程信息管理')) admin.add_view(MyModelView(ChengJi, db.session,name='成绩信息管理')) admin.add_view(MyModelView(TongGao, db.session,name='公告管理')) if __name__ == '__main__': app.run(debug=True)注释这段代码
时间: 2024-01-14 16:03:08 浏览: 375
这段代码使用 Flask-Admin 库创建了一个后台管理系统,包含了对班级、用户、课程、成绩和公告的管理。 MyModelView 继承了 Flask-Admin 提供的 ModelView,自定义了一个 inaccessible_callback 方法,用于处理未授权用户访问页面的情况。 MyUser、MyBanJi 和 MyKeCheng 分别继承了 MyModelView,用于定制不同模型的视图。最后,创建了一个 Admin 实例,并通过 add_view 方法将不同模型的视图添加到后台管理系统中。如果该脚本直接运行,则启动 Flask 服务器开启调试模式。
相关问题
请告诉我如何用flask-admin写一个登录界面
可以参考以下代码:
```python
from flask import Flask, redirect, url_for
from flask_admin import Admin, AdminIndexView
from flask_admin.contrib.sqla import ModelView
from flask_login import current_user, LoginManager, login_user, UserMixin, logout_user
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret_key'
login_manager = LoginManager()
login_manager.init_app(app)
# 定义一个 User 类,用于记录用户信息
class User(UserMixin):
def __init__(self, user_id):
self.id = user_id
# 登录视图,处理用户登录请求
@app.route('/login', methods=['GET', 'POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('admin.index'))
# 处理用户提交的表单
if request.method == 'POST':
user_id = request.form['user_id']
password = request.form['password']
# 验证用户身份
if user_id == 'admin' and password == 'password':
user = User(user_id)
login_user(user)
return redirect(url_for('admin.index'))
# 显示登录表单
return render_template('login.html')
# 登出视图,处理用户登出请求
@app.route('/logout')
def logout():
logout_user()
return redirect(url_for('login'))
# 继承 AdminIndexView,实现自定义首页
class MyAdminIndexView(AdminIndexView):
def is_accessible(self):
return current_user.is_authenticated
def inaccessible_callback(self, name, **kwargs):
return redirect(url_for('login'))
# 定义一个简单的数据模型
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), nullable=False)
email = db.Column(db.String(120), nullable=False, unique=True)
# 继承 ModelView,实现 CRUD 页面
class UserView(ModelView):
column_searchable_list = ['username', 'email']
column_filters = ['username', 'email']
column_editable_list = ['username', 'email']
column_sortable_list = ['username', 'email']
# 创建 Admin 实例,注册模型视图
admin = Admin(app, index_view=MyAdminIndexView())
admin.add_view(UserView(User, db.session))
if __name__ == '__main__':
app.run(debug=True)
```
以上代码实现了一个简单的登录界面和一个数据管理页面,用户可以使用账号密码登录来访问数据管理页面。需要注意的是,这里使用了 Flask-Login 扩展来管理用户信息,使用 Flask-Admin 扩展来实现数据管理页面。
Flask写一个后台管理示例
好的,这是一个技术问题,我可以提供一些帮助。您可以使用 Flask-Admin 扩展来创建一个基本的后台管理系统。您可以使用 SQLAlchemy 来操作数据库。以下是一个示例代码:
```python
from flask import Flask
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
app.config['SECRET_KEY'] = 'secret'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __repr__(self):
return '<User %r>' % self.username
admin = Admin(app, name='后台管理', template_mode='bootstrap3')
admin.add_view(ModelView(User, db.session))
if __name__ == '__main__':
db.create_all()
app.run(debug=True)
```
这段代码会创建一个名为“后台管理”的后台管理界面,并在其中添加一个“User”模型。您可以根据需要进行扩展。希望对您有所帮助!
阅读全文