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日

相关文章

  • Flask框架实现debug模式下计算pin码

    下面是详细讲解 Flask 框架实现 debug 模式下计算 pin 码的完整攻略。 1. 确认 Flask debug 模式开启 在使用 Flask 框架进行开发时,可以通过设置 Flask 的 debug 属性来开启 debug 模式。在 debug 模式中,Flask 会自动将错误信息以及堆栈跟踪信息输出到浏览器中,方便开发过程中调试。在 Flask …

    Flask 2023年5月16日
    00
  • Python的Flask站点中集成xhEditor文本编辑器的教程

    以下是详细的Python Flask站点中集成xhEditor文本编辑器的教程,包含两个示例: 示例1:使用xhEditor自带的示例代码 步骤1:下载xhEditor插件 在官网(http://xheditor.com)下载最新版的xhEditor插件,并解压到本地目录中。 步骤2:准备Flask代码 以下是一个简单的Flask app的代码示例。 fro…

    Flask 2023年5月16日
    00
  • .net任务调度框架FluentScheduler简介

    .NET任务调度框架FluentScheduler简介 简介 FluentScheduler是一款基于.NET的任务调度框架,可以提供简单易用的API,支持多种类型的任务,可以满足各种复杂的任务调度需求。使用FluentScheduler可以省去很多手动编写任务调度代码的工作,提高了编码效率。 安装 使用NuGet包管理器或在Visual Studio的包管…

    Flask 2023年5月16日
    00
  • python web框架的总结

    Python Web框架的总结 Python是一门能够用于Web开发的通用编程语言,它拥有丰富的Web框架和工具,用于帮助Web开发者轻松快速地构建Web应用程序。在本篇文章中,我们将对Python Web框架进行总结,并提供两个示例来说明这些框架的使用。 Web框架的作用 Web框架是一组API或库,用于构建Web应用程序。它们为开发人员提供基础设施,例如…

    Flask 2023年5月15日
    00
  • Python利用flask sqlalchemy实现分页效果

    下面为你详细讲解如何利用flask sqlalchemy实现分页效果。 准备工作 首先,我们需要安装flask sqlalchemy包,可以通过 pip install flask_sqlalchemy 命令进行安装。另外,我们还需要创建一个用于存储数据的数据库。这里我们使用sqlite作为数据库,创建一个名为example.db的数据库文件,以存储数据。 …

    Flask 2023年5月15日
    00
  • Flask框架的学习指南之开发环境搭建

    下面是Flask框架的学习指南之开发环境搭建的完整攻略和两个示例说明。 概述 在学习Flask框架之前,需要先搭建好相应的开发环境。在这篇攻略中,我们将介绍如何搭建Flask开发环境。 步骤 安装Python 首先需要安装Python,官网下载地址为:https://www.python.org/downloads/ 安装pip 下载get-pip.py,官…

    Flask 2023年5月15日
    00
  • Flask FastCGI(处理Web请求)使用方法详解

    Flask是一款轻量级的Web应用框架,可以用于快速开发Web应用。其中,FCGI是一种处理Web请求的协议,它在承载Web服务器和应用程序之间,提供了可靠的通讯机制。 在实际应用中,我们可以使用Flask FastCGI来将Flask应用部署在Web服务器上,然后通过FastCGI协议与Web服务器进行通讯。 本文将介绍Flask FastCGI的使用方法…

    Flask 2023年3月13日
    00
  • 深入flask之异步非堵塞实现代码示例

    以下是关于“深入flask之异步非堵塞实现代码示例”的完整攻略。该攻略包括两部分示例的说明:异步非堵塞实现的示例和使用gunicorn结合gevent的示例。 异步非堵塞实现示例 在Flask中,异步非堵塞实现可以通过使用Flask-SocketIO包中的socketio.run()方法。该方法基于gevent实现了异步非堵塞模型。 首先,需要安装Flask…

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