下面是详细讲解 Flask-Admin 工具的使用教程:
一、Flask-Admin 简介
Flask-Admin 是一个为 Flask 应用程序提供图形化管理界面的插件。Flask-Admin 可以轻松添加表单、搜索、过滤以及图表等多种功能,并提供各种插件,方便开发人员快速开发管理页面。
二、安装 Flask-Admin
首先,我们需要通过 pip 安装 Flask-Admin 插件,可以通过以下命令来完成:
pip install flask-admin
三、创建 Flask-Admin 对象
在 Flask-Admin 中使用的核心对象是 Admin
对象,要使用该对象,我们首先需要从 flask_admin
模块中导入:
from flask_admin import Admin
然后,我们可以创建 Admin
对象,并将该对象与应用程序实例相关联:
admin = Admin(app, name='My App', template_mode='bootstrap3')
其中,参数说明如下:
app
:应用程序实例name
:管理界面的名称template_mode
:使用的模板风格
四、添加 ModelView
在使用 Flask-Admin 的过程中,我们需要为每个模型添加一个 ModelView
,用于管理模型的添加、编辑、删除等操作。通过继承 ModelView
类,我们可以自定义模型的管理页面,例如增加新的字段,更改表单的各个组件等。
以下是一个示例,显示如何使用 ModelView
来添加对 User
模型的管理页面:
from flask_admin.contrib.sqla import ModelView
class MyUserView(ModelView):
column_searchable_list = ['username', 'email']
admin.add_view(MyUserView(User, db.session))
这里,我们使用 MyUserView
类来管理 User
模型,并将其添加到 Admin
对象中。
在 MyUserView
类中,我们使用 column_searchable_list
属性指定了哪些列将用于搜索,并在添加 User
模型时,使用 db.session
参数将数据库会话与 ModelView
关联起来。
五、在应用程序中启动 Flask-Admin
最后,我们在应用程序中启动 Flask-Admin,并将其绑定到一条路由上:
if __name__ == '__main__':
admin = Admin(app, name='My App', template_mode='bootstrap3')
admin.add_view(MyUserView(User, db.session))
app.run(debug=True)
这里,我们添加了对 MyUserView
的引用,并在应用程序中启动了 Flask-Admin。
六、示例1:使用 Flask-Admin 管理博客
以下是一个示例说明,展示如何使用 Flask-Admin 管理博客:
首先,导入需要的模块:
from flask_admin.contrib.sqla import ModelView
from flask_admin import Admin
from flask import Flask, render_template, url_for, redirect
from flask_sqlalchemy import SQLAlchemy
然后,创建应用程序实例,以及数据库设置:
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret-key-goes-here'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
接着,定义 BlogPost
模型:
class BlogPost(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
content = db.Column(db.Text, nullable=False)
author = db.Column(db.String(20), nullable=False)
date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
def __repr__(self):
return 'BlogPost ' + str(self.id)
接下来,定义 BlogPost
的 ModelView
:
class BlogPostAdminView(ModelView):
column_searchable_list = ['title', 'content', 'author']
column_filters = ['author', 'date_posted']
form_columns = ['title', 'content', 'author']
page_size = 10
这里,我们定义了列搜索、列过滤以及表单列等参数。
然后,将 BlogPostAdminView
添加到 Admin
对象中:
admin = Admin(app, name='Blog Admin')
admin.add_view(BlogPostAdminView(BlogPost, db.session))
最后,在应用程序中启动 Flask-Admin:
if __name__ == '__main__':
app.run(debug=True)
在启动后,访问 http://localhost:5000/admin 可以查看博客管理界面。
示例2:使用 Flask-Admin 管理电影院
以下是另一个示例,展示如何使用 Flask-Admin 管理电影院:
首先,导入需要的模块:
from datetime import datetime
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
from flask import Flask, render_template, url_for, redirect
from flask_sqlalchemy import SQLAlchemy
然后,创建应用程序实例、数据库设置以及模型:
app = Flask(__name__)
app.secret_key = '1234'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///movies.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
class Movie(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(80), nullable=False)
director = db.Column(db.String(80), nullable=False)
year = db.Column(db.Integer(), nullable=False)
created_at = db.Column(db.DateTime(), nullable=False, default=datetime.utcnow)
接下来,定义 Movie
的 ModelView
:
class MovieView(ModelView):
column_searchable_list = ['title', 'director', 'year']
column_filters = ['year']
form_columns = ['title', 'director', 'year']
这里,我们定义了列搜索、列过滤以及表单列等参数。
然后,将 MovieView
添加到 Admin
对象中:
admin = Admin(app)
admin.add_view(MovieView(Movie, db.session))
最后,在应用程序中启动 Flask-Admin:
if __name__ == '__main__':
app.run(debug=True)
在启动后,访问 http://localhost:5000/admin 可以查看电影院管理界面。
以上是 Flask-Admin 的使用教程,希望能对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Flask的图形化管理界面搭建框架Flask-Admin的使用教程 - Python技术站