Flask-Admin
简介
Flask-Admin 是一个基于 Flask 的简单且可扩展的后台管理界面库,可以快速为 Web 应用添加后台管理功能,而无需从头编写复杂的管理代码。
安装
python -m pip install flask-admin
flask-admin[sqlalchemy,s3,images,export,translation]可以按需安装扩展依赖。
基本使用
from flask import Flask
from flask_admin import Admin
app = Flask(__name__)
app.secret_key = "1234567890" # Flask-Admin 依赖 session
admin = Admin(app, name="后台管理", template_mode="bootstrap4")
@app.get("/")
def index():
return "this is root"
if __name__ == "__main__":
app.run(host="127.0.0.1", port=5000)
访问 http://127.0.0.1:5000/admin/ 查看后台首页。
结合 SQLAlchemy 模型管理
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.secret_key = "1234567890"
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///app.db"
db = SQLAlchemy(app)
admin = Admin(app, name="后台管理", template_mode="bootstrap4")
class User(db.Model):
__tablename__ = "users"
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
with app.app_context():
db.create_all()
admin.add_view(ModelView(User, db.session))
if __name__ == "__main__":
app.run(host="127.0.0.1", port=5000)
ModelView 默认提供增删改查界面;可以按需重写或配置列:
class UserView(ModelView):
column_list = ("id", "username", "email") # 列表显示列
column_searchable_list = ("username",) # 可搜索列
column_filters = ("email",) # 可过滤列
admin.add_view(UserView(User, db.session))