跳到主要内容

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))

参考