Flask的图形化管理界面搭建框架Flask-Admin的使用教程

下面是详细讲解 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)

接下来,定义 BlogPostModelView

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)

接下来,定义 MovieModelView

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技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • python项目打包成exe和安装包的方法步骤

    当你完成了一个Python项目,你可能会想将其转化为一个可执行文件(Executable)或者安装包文件(Installer)来进行分发,本文将详细介绍如何将Python项目打包为exe或者安装包。下面是两条示例步骤。 一、将Python项目打包为exe 步骤1:安装 PyInstaller 打包 Python 项目需要用到一个第三方库 PyInstalle…

    Flask 2023年5月16日
    00
  • Python定时库APScheduler的原理以及用法示例

    APScheduler是Python的一个定时任务调度库,可以用于定时任务的管理,例如定时执行数据备份、定时清理缓存等任务。APScheduler可以根据特定的时间周期,定时执行指定的Python函数。下面我们来详细讲解APScheduler的原理以及使用示例。 APScheduler的原理 APScheduler通过调度器(Scheduler)来实现定时任…

    Flask 2023年5月16日
    00
  • Python Web框架Flask中使用百度云存储BCS实例

    下面就为大家详细讲解在Python Web框架Flask中使用百度云存储BCS实例的完整攻略。具体步骤如下: 1. 安装Flask和BCS SDK 在使用Flask和BCS SDK之前,需要先安装它们。可以使用pip在命令行中进行安装。 命令行中输入: pip install flask pip install bcs-python-sdk 2. 配置BCS…

    Flask 2023年5月16日
    00
  • Flask 变量规则详解

    Flask 是一个轻量级的 Web 框架,其变量规则功能允许开发者创建动态 URL。这篇文章将介绍 Flask 变量规则的详细信息,帮助开发者理解如何使用 Flask 创建动态 URL。本文将涉及以下主题: 什么是变量规则? 如何使用变量规则创建动态 URL? 给变量规则添加限制条件 什么是变量规则? 在 Flask 中,变量规则指的是将 URL 中的部分作…

    Flask 2023年3月13日
    00
  • Flask实现图片的上传、下载及展示示例代码

    本篇回答将介绍如何在Flask中实现图片上传、下载及展示,并提供两个完整的示例代码。 示例1:图片上传 前置要求 在进行图片上传之前,需要安装Flask及Flask-Uploads库: pip install Flask Flask-Uploads Step1:创建Flask应用 from flask import Flask app = Flask(__n…

    Flask 2023年5月15日
    00
  • docker-compose统一管理多个容器使用详解

    Docker-Compose 统一管理多个容器使用详解 Docker-Compose 是 Docker 官方提供的管理多个容器的工具。通过一个配置文件可以管理、启动和停止多个容器,非常方便。 本文将详细讲解 Docker-Compose 的使用方法和相关配置。同时,提供两个实例演示来说明如何使用 Docker-Compose。 Docker-Compose …

    Flask 2023年5月16日
    00
  • Flask + MySQL如何实现用户注册,登录和登出的项目实践

    Flask是一款轻量级的Web框架,非常方便快捷。MySQL则是一款常用的数据库,两者结合可以实现很多有趣的项目。本文将介绍如何使用Flask和MySQL实现用户注册、登录和登出功能的项目实践。 准备工作 在开始项目之前,我们需要准备一些工具和环境: Python环境:Flask是Python编写的Web框架,我们首先需要安装Python环境。 Flask框…

    Flask 2023年5月16日
    00
  • 基于CentOS搭建Python Django环境过程解析

    下面就是关于如何基于CentOS搭建Python Django环境的完整攻略,包含了两条具体的示例说明。 准备工作 在开始之前,我们需要安装一些必要的软件,包括Python、pip、virtualenv和git等,这可以通过以下命令来完成: sudo yum install python3 python3-pip python3-devel git sudo…

    Flask 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部