使用Flask-Admin创建强大的后台管理系统

文章目录

      • 安装Flask-Admin
      • 创建Flask应用
      • 添加Flask-Admin
      • 添加模型
      • 扩展延伸
        • 自定义视图
        • 权限管理
        • 文件上传
      • 结语

在Web应用开发中,后台管理系统是至关重要的组成部分,它能够让管理员轻松管理应用的各种数据和配置。Flask-Admin是一个功能强大的Flask扩展,可以帮助我们快速构建灵活、易于定制的后台管理界面。本文将介绍如何使用Flask-Admin创建一个强大的后台管理系统,并展示一些常用功能的实现。
在这里插入图片描述

安装Flask-Admin

首先,我们需要安装Flask-Admin。可以使用pip来安装:

pip install Flask-Admin

创建Flask应用

在创建Flask应用之前,确保已经安装了Flask:

pip install Flask

接下来,创建一个简单的Flask应用:

from flask import Flaskapp = Flask(__name__)@app.route('/')
def index():return 'Hello, Flask-Admin!'if __name__ == '__main__':app.run(debug=True)

保存为app.py,然后运行应用:

python app.py

现在,打开浏览器访问http://localhost:5000,应该可以看到"Hello, Flask-Admin!"的页面。

添加Flask-Admin

现在,我们将添加Flask-Admin到我们的应用中。修改app.py文件:

from flask import Flask
from flask_admin import Adminapp = Flask(__name__)
admin = Admin(app, name='My Admin', template_mode='bootstrap3')@app.route('/')
def index():return 'Hello, Flask-Admin!'if __name__ == '__main__':app.run(debug=True)

现在,重新运行应用,访问http://localhost:5000/admin,你应该能够看到Flask-Admin的管理界面。

添加模型

接下来,我们将添加一个简单的模型到Flask-Admin中。假设我们有一个名为User的模型,包含idusername字段。首先,安装SQLAlchemy:

pip install SQLAlchemy

然后,修改app.py文件:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelViewapp = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)
admin = Admin(app, name='My Admin', template_mode='bootstrap3')class User(db.Model):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(80), unique=True, nullable=False)admin.add_view(ModelView(User, db.session))@app.route('/')
def index():return 'Hello, Flask-Admin!'if __name__ == '__main__':db.create_all()app.run(debug=True)

这样,我们就将User模型添加到了Flask-Admin中,并可以在管理界面中进行增删改查操作。

扩展延伸

通过Flask-Admin,我们可以轻松地创建强大的后台管理系统,管理应用的各种数据和配置。除了上面介绍的功能之外,Flask-Admin还支持自定义视图、权限管理、文件上传等功能,可以根据实际需求进行定制。

当使用Flask-Admin构建后台管理系统时,除了基本的增删改查功能之外,还可以通过一些高级功能来进一步提升系统的灵活性和易用性。

自定义视图

Flask-Admin允许开发者自定义视图,以满足特定需求。通过自定义视图,可以实现更复杂的数据展示和操作逻辑。比如,可以创建一个自定义视图来展示统计信息、图表数据或者复杂的数据关联关系。

from flask_admin.contrib.sqla import ModelView
from flask_admin.model.template import macroclass CustomUserView(ModelView):column_list = ('id', 'username', 'email')column_searchable_list = ('username', 'email')column_extra_row_actions = [LinkRowAction('glyphicon glyphicon-user', 'user_details', tooltip='User details'),]column_formatters = dict(username=macro('render_username'))def render_username(view, context, model, name):return Markup(f'<a href="/user/{model.id}">{model.username}</a>')
权限管理

在实际应用中,通常需要对不同角色的用户进行权限管理。Flask-Admin提供了灵活的权限管理功能,可以根据用户角色来控制其对数据和功能的访问权限。可以通过自定义的方式来定义不同角色的权限,并将其应用到相应的视图中。

from flask_admin import AdminIndexView, expose
from flask_login import current_userclass MyAdminIndexView(AdminIndexView):@expose('/')def index(self):if not current_user.is_authenticated or not current_user.has_role('admin'):return self.render('admin/forbidden.html')return super(MyAdminIndexView, self).index()
文件上传

在后台管理系统中,经常需要支持文件上传功能。Flask-Admin提供了方便的文件上传功能,可以通过简单的配置实现文件的上传和管理。可以结合第三方存储服务,如Amazon S3或者七牛云,来存储上传的文件,并在管理界面中进行管理。

from flask_admin.contrib.fileadmin import FileAdmin
import os.path as oppath = op.join(op.dirname(__file__), 'static')admin.add_view(FileAdmin(path, '/static/', name='Static Files'))

结语

通过上述扩展功能,我们可以更加灵活地定制后台管理系统,满足不同应用的需求。无论是简单的数据管理还是复杂的业务逻辑,Flask-Admin都能够提供强大的支持,让开发者可以更专注于业务逻辑的实现,而不用过多关注管理界面的实现细节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/691748.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue的css深度选择器 deep /deep/

作用及概念 当 <style> 标签有 scoped 属性时&#xff0c;它的 CSS 只作用于当前组件中的元素&#xff0c;父组件的样式将不会渗透到子组件。在vue中是这样描述的&#xff1a; 处于 scoped 样式中的选择器如果想要做更“深度”的选择&#xff0c;也即&#xff1a;影响到子…

Verilog复习(四)| 组合逻辑

一位全加器结构描述&#xff1a; 数据流描述&#xff1a; 行为描述&#xff1a; 只要有事件发生&#xff08;列表中任何 信号有变化&#xff09;&#xff0c;就执行begin…end 的语句 。 always的事件控制方式 边沿触发 always (posedge clk) // clk从低电平->高&#x…

JeeSite 平台 Spring Boot 3 体验版发布,一个 Java 快速开发平台

引言 是时候为 Spring Boot 3 做准备了&#xff0c;2018年2月 Spring Boot 进入 2.0 时代&#xff0c;距今已经 5 年了。2022 年 11 月 Spring Boot 3.0 正式发布&#xff0c;它将基于 Spring Framework 6.0&#xff0c;并且需要 Java 17 版本&#xff0c;同时它也将是 Jakart…

AtCoder Beginner Contest 353 A~E(F,G更新中...)

A.Buildings 题意 给出若干个建筑&#xff0c;每个建筑有一个高度&#xff0c;问&#xff0c;从第二个建筑开始&#xff0c;比第一个建筑高的建筑中编号最小的是多少&#xff1f;如果不存在&#xff0c;输出-1. 分析 边输入边比较即可&#xff0c;如果循环结束还未找到&…

阿里开源编程大模型 CodeQwen1.5:64K92编程语言,Code和SQL编程,评测接近GPT-4-Turbo

前言 阿里巴巴最近发布的CodeQwen1.5模型标志着其在编程语言模型领域的一次重大突破。这款开源模型不仅支持高达92种编程语言和64K的上下文长度&#xff0c;而且在多项性能评测中显示出接近或超过当前行业领导者GPT-4-Turbo的能力。 Huggingface模型下载&#xff1a;https://h…

QTreeView学习 branch 虚线设置

1、方法一&#xff1a; #include <QStyleFactory> ui.treeView->setStyle(QStyleFactory::create("windows")); 2、方法二&#xff1a; QString strtyle2 R"( QTreeView::branch:has-siblings:!adjoins-item { border-image: url(:/TreeViewDe…

Vulnhub靶机随笔-Hacksudo_Aliens

Vulnhub靶机Hacksudo_Aliens详解 攻击机Kali IP:192.168.3.44 靶机 IP:未知 系统:未知 A.信息收集 扫描靶机存活性 确定IP地址 1.命令:arp-scan -l 扫描靶机开放端口及其服务版本信息 2.命令 nmap -A -p- -sV 靶机IP地址 靶机开放三个端口,22ssh端口,80web端…

计算机网络(网络原理与应用)之高级交换实验------冗余环路与生成树协议

一、实验目的 (1)了解生成树协议的作用&#xff1b; (2)熟悉生成树协议的配置。 二、应用环境 采用生成树协议可以避免环路。 生成树协议的根本目的是将一个存在物理环路的交换网络变成一个没有环路的逻辑树形网络。IEEE802.ID协议通过在交换机上运行一套复杂的算法STA(sp…

[机器学习-05] Scikit-Learn机器学习工具包进阶指南:协方差估计和交叉分解功能实战【2024最新】

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

pyqt5将ui文件转为python文件

在pyqt5中使用 pyuic将ui文件转为py文件&#xff1a; 例如&#xff1a;将home.ui文件转为vio_detect.py文件&#xff0c;所需命令如下&#xff1a; pyuic5 -x home.ui -o vio_detect.py

zookeeper安装集群模式

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 ZooKeeper是一个分…

【神经网络】输出层的设计

文章目录 前言一、恒等函数和softmax函数恒等函数softmax 函数python实现softmax函数 二、实现softmax函数时的注意事项函数优化python实现 三、softmax函数的特征计算神经网络的输出输出层的softmax函数可以省略“学习”和“推理”阶段 四、输出层的神经元数量 前言 神经网络…