第九节:Vben Admin实战-系统管理之角色管理实现-上

news2024/10/7 20:25:48

系列文章目录

第一节: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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RUST egui体验

egui官方提供了web版的demo&#xff0c;效果还是很不错的&#xff0c;就是用的时候有点一头雾水&#xff0c;没有找到明确的指导怎么把这些组件插入到自己的application或者web。花了一天时间撸了一遍流程&#xff0c;记录一下&#xff0c;说不定以后能用到呢 >_< efram…

蓝桥杯并查集|路径压缩|合并优化|按秩合并|合根植物(C++)

并查集 并查集是大量的树&#xff08;单个节点也算是树&#xff09;经过合并生成一系列家族森林的过程。 可以合并可以查询的集合的一种算法 可以查询哪个元素属于哪个集合 每个集合也就是每棵树都是由根节点确定&#xff0c;也可以理解为每个家族的族长就是根节点。 元素集合…

【Java基础知识总结 | 第三篇】深入理解分析ArrayList源码

文章目录 3.深入理解分析ArrayList源码3.1ArrayList简介3.2ArrayLisy和Vector的区别&#xff1f;3.3ArrayList核心源码解读3.3.1ArrayList存储机制&#xff08;1&#xff09;构造函数&#xff08;2&#xff09;add()方法&#xff08;3&#xff09;新增元素大体流程 3.3.2ArrayL…

R:简易的Circos图

library(grid) library(circlize) library(RColorBrewer) library(ComplexHeatmap) setwd("C:/Users/fordata/Downloads/Circos") # 创建颜色调色板 coul <- colorRampPalette(brewer.pal(9, "Set3"))(12) # 读取基因组数据 genome <- read.table(ci…

【启动npm run serve 奇怪的报错】

报错如下&#xff1a; INFO Starting development server... utils.js:587Uncaught TypeError [ERR_INVALID_ARG_VALUE]: The argument path must be a string or Uint8Array without null bytes. Received E:\\#\u0000#idea-workspace\\wonderful-search\\wonderful-search-v…

julia语言中的决策树

决策树&#xff08;Decision Tree&#xff09;是一种基本的分类与回归方法&#xff0c;它呈现出一种树形结构&#xff0c;可以直观地展示决策的过程和结果。在决策树中&#xff0c;每个内部节点表示一个属性上的判断条件&#xff0c;每个分支代表一个可能的属性值&#xff0c;每…

JavaSE、JavaEE和Jakarta EE的历史、区别与联系

JavaSE、JavaEE和Jakarta EE是Java平台中的三个重要组成部分&#xff0c;它们各自承担着不同的角色&#xff0c;同时也有着密切的联系。在理解它们之间的历史、区别和联系之前&#xff0c;我们首先需要了解它们的基本概念。 JavaSE&#xff08;Java Standard Edition&#xff…

电脑充电器能充手机吗?如何给手机充电?

电脑充电器可以给手机充电吗&#xff1f; 电脑充电器可以给手机充电&#xff0c;但前提是电脑充电器的功率输出与手机的功率匹配且接口匹配。 假设电脑充电器的输出功率为5V/2A&#xff0c;手机也支持5V/2A的输入功率。 只要接口匹配&#xff0c;就可以使用电脑充电器给手机充…

基于单片机的光电传感转速测量系统的设计

摘要:针对在工程实践中很多场合都需要对转速这一参数进行精准测量的目的,采用以STC89C52 芯片为核心,结合转动系统、光电传感器、显示模块等构成光电传感器转速测量系统,实现对电机 转速的测量。通过测试表明该系统具有结构简单、所耗成本低,测量精度高、稳定可靠等优点,…

Day67:WEB攻防-Java安全JNDIRMILDAP五大不安全组件RCE执行不出网

知识点&#xff1a; 1、Java安全-RCE执行-5大类函数调用 2、Java安全-JNDI注入-RMI&LDAP&高版本 3、Java安全-不安全组件-Shiro&FastJson&JackJson&XStream&Log4j Java安全-RCE执行-5大类函数调用 Java中代码执行的类&#xff1a; GroovyRuntimeExecPr…

html5cssjs代码 023 公制计量单位进位与换算表

html5&css&js代码 023 公制计量单位进位与换算表 一、代码二、解释 这段HTML代码定义了一个网页&#xff0c;用于展示公制计量单位的进位与换算表。 一、代码 <!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"utf-8&quo…

将FastSAM中的TextPrompt迁移到MobileSAM中

本博文简单介绍了SAM、FastSAM与MobileSAM,主要关注于TextPrompt功能的使用。从性能上看MobileSAM是最实用的,但其没有提供TextPrompt功能,故而参考FastSAM中的实现,在MobileSAM中嵌入TextPrompt类。并将TextPrompt能力嵌入到MobileSAM官方项目提供的gradio.py部署代码中,…

ros小问题之差速轮式机器人轮子不显示(rviz gazebo)

在rviz及gazebo练习差速轮式机器人时&#xff0c;很奇怪&#xff0c;只有个机器人的底板及底部的两个万向轮&#xff0c;如下图&#xff0c; 后来查看相关.xacro文件&#xff0c;里面是引用包含了轮子的xacro文件&#xff0c;只需传入不同的参数即可调用生成不同位置的轮子&…

ARM_基础之RAS

Reliability, Availability, and Serviceability (RAS), for A-profile architecture 源自 https://developer.arm.com/documentation/102105/latest/ 1 Introduction to RAS 1.1 Faults,Errors,and failures 三个概念的区分&#xff1a; • A failure is the event of devia…

IDEA系列软件设置自动换行

以pycharm软件为例&#xff0c;我们在编程的时候常常会遇到这种情况&#xff0c;内容过长导致超出pycharm的界面&#xff0c;导致我们阅读浏览起来非常的不方便&#xff0c;对于这种情况&#xff0c;我们可以通过给IDEA软件设置自动换行来解决 首先打开setting&#xff0c;找到…

MySQL_数据库图形化界面软件_00000_00001

目录 NavicatSQLyogDBeaverMySQL Workbench可能出现的问题 Navicat 官网地址&#xff1a; 英文&#xff1a;https://www.navicat.com 中文&#xff1a;https://www.navicat.com.cn SQLyog 官网地址&#xff1a; 英文&#xff1a;https://webyog.com DBeaver 官网地址&…

odoo17开发教程(6):用户界面UI的交互-创建Action

前面的文章中我们已经创建了新模型及其相应的访问权限&#xff0c;是时候与用户界面进行交互了。 数据文件&#xff08;XML&#xff09; 在上一篇文章中&#xff0c;我们通过 CSV 文件添加数据。当要加载的数据格式简单时&#xff0c;CSV 格式很方便。当格式比较复杂时&#x…

Javaweb学习记录(一)Maven

Maven是一款Java项目管理工具&#xff0c;下面将介绍Maven的实际作用和相关的操作 Maven项目依赖的添加 在Maven项目中添加依赖&#xff0c;通过dependencies标签添加所有依赖&#xff0c;所有依赖都添加在里面&#xff0c;而单个依赖就使用dependency标签添加进项目&#xf…

【数据结构入门】顺序表详解(增删查改)

目录 顺序表的基本概念 动态顺序表的实现 初始化 插入 尾插法 头插法 指定位置之前插入 删除 尾删法 头删法 指定位置删除 查找 销毁 顺序表的基本概念 什么是顺序表&#xff1f; 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般…

elasticsearch基础学习

elasticsearch简介 什么是elasticsearch elasticsearch&#xff08;简称es&#xff09;&#xff0c;其核心是 Elastic Stack&#xff0c;es是一个基于 Apache Lucene&#xff08;TM&#xff09;的开源的高扩展的分布式全文检索引擎&#xff0c;它可以近乎实时的存储、检索数据…