测试开发之路--Flask 之旅 (五):后台管理

简介: 本文介绍了如何使用 Flask-Admin 模块为应用添加后台管理功能,包括数据库表管理、自定义视图及服务器文件管理。通过实例展示了如何初始化 Flask-Admin,并实现对用户、角色等表的增删查改操作。此外,还介绍了如何定制视图及管理服务器上的配置文件。这一模块大大提升了应用的管理效率与灵活性。

来源:https://testerhome.com

背景

现在我们可以针对环境做增删查改,环境部署,查看log,登录以及权限管理等相关功能。现在还缺少个后台管理的功能。专门给Admin用户准备的功能。 例如删除用户,控制数据库中的表,管理配置文件等等。好在Flask依然提供了一个扩展模块帮助我们快速搭建一个后台管理系统,这个模块就是--Flask-Admin

Flask-Admin

这是一个很有用使用起来也很简单模块。 我们需要运行下面的代码来初始化这个模块。

代码语言:javascript

复制

from flask_admin import Admin
admin = Admin(app, name='env manager')

接下来在浏览器上访问http://0.0.0.0:9537/admin。 就可以看到下面的截图(注:这是我本地环境的URL):

当然,现在这个后台管理还是空的。 下面我们一点一点的填充需要的功能。

数据库管理

首先我们来添加数据库表的管理功能,按下面的代码进行初始化。

代码语言:javascript

复制

from flask_admin.contrib.sqla import ModelView
class EnvModelView(ModelView):
    def is_accessible(self):
        return current_user.has_role('Admin')
    def inaccessible_callback(self, name, **kwargs):
        # redirect to login page if user doesn't have access
        return redirect(url_for('login', next=request.url))
# 初始化Flask-Admin
admin = Admin(app, name='env manager')
admin.add_view(EnvModelView(User, db.session))
admin.add_view(EnvModelView(Role, db.session))
admin.add_view(EnvModelView(Env, db.session))

我们自己实现一个EnvModelView 并继承Flask-Admin的ModelView, 重写两个方法来进行权限控制。还记得我们上一次说的权限控制么?在这里也可以用,我们判断当前用户是否为Admin用户,如果不是就重定向到login页面去。 接下来我们使用admin.add_view方法将我们的model视图添加进来,分别添加User,Role和Env表,这些表是我们之前就通过Flask-SQLAlchemy创建好的。 然后我们再去访问一下刚才的页面,你会发现有所不同。

是的,你会发现这两个表的视图已经添加我们的admin页面中了。 点进去看一下是这个样子的。

你可以针对每一个表进行增删查改的操作。假如你要定制一些自己的东西,可以覆盖ModelView中的部分方法或属性。如下:

代码语言:javascript

复制

# Disable model creation
    can_create = False
    # Override displayed fields
    column_list = ('name', 'email')

在自动以的ModelView里覆盖这两个属性,机会可以禁止添加操作并且只显示name和email这两列。

定制视图

当然了,光有数据表的管理意义不大,我们希望能定制自己的视图以添加更多的功能。 我们可以如下编写代码:

代码语言:javascript

复制

from flask_admin import Admin, expose, BaseView
class UserView(BaseView):
    @expose('/')
    def index(self):
        return self.render('admin/user.html')
    @expose('/user_manager')
    def user_manager(self):
        return self.render('admin/user.html')
# 初始化Flask-Admin
admin = Admin(app, name='env manager')
admin.add_view(EnvModelView(User, db.session))
admin.add_view(EnvModelView(Role, db.session))
admin.add_view(EnvModelView(Env, db.session))
admin.add_view(UserView(name='user_manager'))

上面我们继承Flask-Admin的BaseView并提供了两个用expose装饰的方法。这里有一个需要注意的。每一个自定义视图必须提供一个@expose('/') 的index方法。否则会报错。之后我们再次使用admin.add_view方法进行添加视图。你会在页面上看到你想要的

服务器文件管理

接来下说最后的功能。我们有时候需要对服务器保存的或者产生的一些静态文件进行管理。例如在我的这个例子中,环境的配置文件是保存在服务器上的,而不是数据库中。这么做是为了兼容开发人员的需要,他们习惯了使用脚本进行环境上的操作。对于开发来说,很多情况下页面是多余的,运行一些脚本根本不是事儿。所以为了能管理在数据库中记录过的配置和开发人员的这些不在这个服务中使用的配置文件(额,感觉说的这么乱呢),我们添加一个文件管理功能。这个操作灰常的简单,你可以按下面的代码操作:

代码语言:javascript

复制

from flask.ext.admin.contrib.fileadmin import FileAdmin
admin.add_view(FileAdmin(config_path, '/file/', name='Config Files'))

恩,就是这么简单,使用FileAdmin方法,第一个参数是文件目录的路径,第二个参数是显示的名字。然后我们再看看页面上是怎么展示的。

OK,我们现在有了对服务器上的配置文件的管理能力了。已然可以增删查改

总结

好了,现在我们又增加了一个重量级模块。这个web的能力在一点一点的完善中。

目录
相关文章
|
11月前
|
安全 测试技术 网络安全
软件测试|测试平台开发-Flask 入门:URL组成部分详解
软件测试|测试平台开发-Flask 入门:URL组成部分详解
58 0
|
5天前
|
JavaScript 前端开发 数据库
测试开发之路--Flask 之旅 (四):登录与权限控制
本文介绍了如何使用 Flask-Security 和 Flask-Login 实现权限管理和用户登录功能。首先讲解了 Flask 的消息闪现功能,用于向模板传递信息。接着介绍了如何利用 Flask-Security 的 `roles_required` 和 `roles_accepted` 装饰器保护页面,并展示了如何通过 `current_user` 获取当前用户信息。最后提到了使用 Flask-Login 时应避免升级至 0.4.0 版本,以防出现兼容性问题。通过这些技术,搭建了一个基本的用户权限管理系统。
24 6
测试开发之路--Flask 之旅 (四):登录与权限控制
|
5天前
|
JavaScript 前端开发 数据库
测试开发之路--Flask 之旅 (三):数据库
本文介绍了在 Flask 应用中实现权限管理的过程,包括使用 Flask-SQLAlchemy、Flask-MySQLdb、Flask-Security 和 Flask-Login 等扩展模块进行数据库配置与用户权限设置。首先创建数据库并定义用户、环境和角色模型,接着通过 Flask-Security 初始化用户和角色,并展示了如何便捷地管理权限。后续将深入探讨权限控制的具体应用。
22 4
测试开发之路--Flask 之旅 (三):数据库
|
4月前
|
测试技术 Apache 项目管理
软件测试|探索Flask接口路由技术:构建灵活可拓展的Python应用
软件测试|探索Flask接口路由技术:构建灵活可拓展的Python应用
41 1
|
11月前
|
存储 测试技术 网络架构
软件测试|测试平台开发-Flask入门:Flask动态路由
软件测试|测试平台开发-Flask入门:Flask动态路由
55 0
|
11月前
|
中间件 测试技术 数据库
软件测试|测试平台开发-Flask 入门:Flask HTTP请求详解
软件测试|测试平台开发-Flask 入门:Flask HTTP请求详解
61 0
|
存储 安全 测试技术
软件测试|flask的项目配置管理
软件测试|flask的项目配置管理
73 0
|
测试技术 Apache Python
软件测试|一文教你flask路由配置
软件测试|一文教你flask路由配置
122 0
软件测试|一文教你flask路由配置
|
开发框架 前端开发 测试技术
软件测试|一文带你了解Flask框架
软件测试|一文带你了解Flask框架
128 0
软件测试|一文带你了解Flask框架
|
测试技术 数据库 Python
查看登录性能优化和测试覆盖率的详细解决方案【flask框架】
查看登录性能优化和测试覆盖率的详细解决方案【flask框架】
139 0
查看登录性能优化和测试覆盖率的详细解决方案【flask框架】