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

yizhihongxing

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

相关文章

  • Flask框架单例模式实现方法详解

    Flask框架单例模式实现方法详解 什么是单例模式? 单例模式是一种创建型设计模式,它能够确保某个类只有一个实例,并提供一个全局的访问点。在许多情况下,单例模式能够有效地降低系统中的代码重复和资源消耗。 Flask框架中单例模式的应用 在Flask框架应用开发中,我们经常需要使用一些单例对象,例如数据库连接对象、配置对象等。为了保证对这些单例对象的访问是线程…

    Flask 2023年5月15日
    00
  • flask 使用 flask_apscheduler 做定时循环任务的实现

    下面是关于“flask 使用 flask_apscheduler 做定时循环任务的实现”的完整攻略,包含两条示例说明: 1. 安装 flask_apscheduler 在终端中输入以下命令安装 flask_apscheduler: pip install flask_apscheduler 2. 创建 Flask 应用 在 Python 代码中引入 Flas…

    Flask 2023年5月16日
    00
  • python3 flask实现文件上传功能

    下面我将为你详细讲解“Python3 Flask 实现文件上传功能”的完整攻略。 1. 确定上传文件的保存路径 在 Flask 中,我们可以通过设置 app.config 来确定上传文件的保存路径。一般来说,我们建议将上传文件保存在外部的文件夹中,而不要与 Flask 应用程序的代码混淆。 下面是一个设置上传文件保存路径的代码示例: import os fr…

    Flask 2023年5月15日
    00
  • 详解Flask Session 会话的使用方法

    Flask Session 是 Flask 框架中处理会话的标准机制。它是一种服务器端状态管理机制,可用于跟踪用户的活动并在不同请求之间保留数据。 在本篇文章中,我们将介绍 Flask Session 的核心概念、使用方法和必要知识点。我们将通过一个实例程序进行演示,代码示例已经包含在下文中。 安装 Flask-Session 扩展 安装 Flask-Ses…

    Flask 2023年3月13日
    00
  • Python使用Flask-SQLAlchemy连接数据库操作示例

    下面是关于Python使用Flask-SQLAlchemy连接数据库操作示例的完整攻略。本文将分为以下几个部分来讲解: 安装Flask-SQLAlchemy 创建数据库连接 数据库操作示例1:数据模型定义 数据库操作示例2:数据增删改查 1. 安装Flask-SQLAlchemy 在使用Flask-SQLAlchemy之前,我们需要先安装它。可以使用以下命令…

    Flask 2023年5月16日
    00
  • Python写一个简单的api接口的实现

    下面我来详细讲解如何用Python编写一个简单的API接口。 首先,我们需要确定我们要提供的API接口的功能和参数。在代码编写之前,需要进行接口设计,包括接口的输入参数、输出内容类型以及接口地址等等。 接着,我们需要选用一个Web框架来实现API接口。这里我们以Flask框架为例。Flask是一个开源的Python Web框架,具有轻量级、易学易用等优点,非…

    Flask 2023年5月16日
    00
  • Flask wtforms实现表单验证使用

    下面是详细的“Flask wtforms实现表单验证使用”的攻略: 一、前置知识 在使用 Flask wtforms 实现表单验证前,需要了解以下知识: Flask:Python Web 应用框架,提供了一个模块化的方式组织 Web 应用程序。 Flask wtforms:基于 Flask 的表单验证扩展,可以方便地进行表单验证。 HTML 表单:Web 表…

    Flask 2023年5月16日
    00
  • flask/django 动态查询表结构相同表名不同数据的Model实现方法

    Flask/Django是目前非常流行的Python Web框架,可以用于开发各种规模的Web应用程序。在开发Web应用程序时,经常需要动态地查询不同数据表中结构相同的数据。本文将介绍如何实现动态查询表结构相同、表名不同的数据表。 方法一:使用Django的多数据库 在Django应用程序中,可以使用多个数据库连接(Multi-database)来连接多个数…

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