系列文章目录
第一节:Vben Admin介绍和初次运行
第二节:Vben Admin 登录逻辑梳理和对接后端准备
第三节:Vben Admin登录对接后端login接口
第四节:Vben Admin登录对接后端getUserInfo接口
第五节:Vben Admin权限-前端控制方式
第六节:Vben Admin权限-后端控制方式
第七节:Vben Admin权限-后端获取路由和菜单
第八节:Vben Admin登录页面自定义
专栏链接
Vben Admin框架实战(Python后端)
文章目录
- 系列文章目录
- 前言
- 一、目标效果
- 二、初始化数据库
-
- 1.创建模型
- 2.迁移模型
- 三、Vben Admin 角色管理
-
- 1、菜单创建
- 2、前端页面创建
- 3、 角色添加
- 4、角色添加 -- 前端接口
- 5、角色添加 -- 后端接口
- 6、 添加验证
- 7、 本节知识点
- 总结
前言
之前的章节,主要侧重对Vben Admin的了解,后端代码主要是模拟的Json数据,从本节开始,我们要侧重后端的代码,结合数据库进行系统权限的管理。本节主要介绍角色管理模块的增删改查。
一、目标效果
本节,我们要修改适配Vben Admin的角色管理的页面,后端开发接口满足Vben Admin角色管理(增,删,改,查)的功能。
截图如下:
二、初始化数据库
我们这里使用了Flask的Flask-SQLAlchemyORM框架。
ORM框架屏蔽了底层数据库的操作,提供了一个python编程接口,使得开发者可以直接使用python代码操作数据库,而不是直接操作SQL语句。
1.创建模型
这里我们创建一个Role模型,对应的是role表。之前我们曾经创建过一个User模型,对应用户表。用户表的role_code字段和角色表的role_code字段对应。传送门:
第三节:Vben Admin登录对接后端login接口
# 角色表
class Role(db.Model):
__tablename__ = 'role'
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
role_code = db.Column(db.String(100),nullable=False)
role_name = db.Column(db.String(100),nullable=False)
role_describe = db.Column(db.String(200),nullable=False)
status = db.Column(db.SmallInteger,default='1') #状态 1:有效 0:无效
def __init__(self,role_code,role_name,role_describe,status):
self.role_code = role_code
self.role_name = role_name
self.role_describe = role_describe
self.status = status
2.迁移模型
(RabbitENV3.9) [root@work rabbit-blog]# flask --app apps db migrate -m 'RBAC'
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.autogenerate.compare] Detected added table 'role'
(RabbitENV3.9) [root@work rabbit-blog]# flask --app apps db upgrade
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade 13b2f5df9463 -> 0f238ea80183, RBAC
迁移完成后,我们可以查看数据库状态,如图,role表已经自动创建完成了。
三、Vben Admin 角色管理
1、菜单创建
第七节,我们曾经介绍过,后端代码如何返回前端菜单。
传送门:
第七节:Vben Admin权限-后端获取路由和菜单
本节我们还是先通过第七节的方式,先通过接口返回系统管理的菜单。在专栏的最后,菜单也回通过数据库管理。
这里我们创建一个SystemRouter,显示系统管理菜单
# 获取用户菜单
@bp