rbac组件引用
一. 批量操作思路
# 待新增 路由系统中有,但是数据库中还没有
路由系统的集合 - 数据库中权限集合 # 待更新 路由系统中有,数据库中也有, 只是更改了一些信息
路由系统的集合 & 数据库中的权限集合 # 待删除 数据库中有,路由中没有的
数据库权限集合 - 路由系统集合
二 . 权限组件的应用
1. 拷贝rbac APP到新的项目中 并且要在settings中注册
2. 数据库迁移
1. 用户表的继承
class User(models.Model):
"""
用户表
"""
# 这个Role一定不能是字符串,而且这个Role这张表一定要写到User的上边,这样从上到下加载的时候才能引用到这个类 roles = models.ManyToManyField(Role, verbose_name='用户所拥有的角色', blank=True) #Role不用字符串的形式 用类的方式 class Meta:
abstract = True # 当前的表不会在数据库中生成,用于作为基类,让子类继承
2. 清除掉rbac下migrations的除了__init__之外的所有py文件,而且admin中用到了User表也要注释掉
3. 执行数据库迁移的命令 3. rbac的路由配置
url(r'rbac/', include('rbac.urls',namespace='rbac')), 4. 权限信息的录入
录入角色
录入一级菜单
录入权限信息
批量操作 注意: 所有的url要有name
权限的分配
注意 使用正确的用户表
给角色分配权限
给用户分配角色 5. 应用上中间件
在settins中注册中间件
MIDDLEWARE = [
...
'rbac.middlewares.rbac.RbacMiddleWare',
] 在settins中加上权限的相关配置
6. 登录成功进行全新信息的初始化
from rbac.service.permission import init_permission
登陆成功后
init_permission(request,obj) 7. 应用二级菜单
{% load rbac %}
{% menu request %} 应用css js
<link rel="stylesheet" href="{% static 'rbac/css/menu.css' %} "/>
<script src="{% static 'rbac/js/menu.js' %} "></script> 8. 路径导航
{% breadcrumb request %} 9. 权限粒度控制到按钮级别
{% load rbac_tags %}
{% if request|has_permission:'class_add' %}
<a class="btn btn-success btn-sm" style="margin: 3px" href="{% url 'class_add' %}"> <i
class="fa fa-plus-square"></i> 添加 </a>
{% endif %}
rbac组件引用的更多相关文章
- rbac组件
创建新项目 新建一个项目untitled,注意django 版本为1.11 修改models.py,增加2个表 from django.db import models class Classes(m ...
- python 全栈开发,Day108(客户管理之权限控制,客户管理之动态"一级"菜单,其他应用使用rbac组件,django static文件的引入方式)
一.客户管理之权限控制 昨天的作业,有很多不完善的地方 下载代码,基本实现权限验证 https://github.com/987334176/luffy_permission/archive/v1.2 ...
- CRM rbac 组件的应用
1 拷贝 rbac 组件到项目中,注册这个app 2 数据库迁移 1 删除rbac下migrations里除了init外的文件 2 修改用户表 class User(models.Model): &q ...
- vue.js 组件引用之初级 之二
1. template 标签也可以实现替换,这样可以省去script标签了 <!DOCTYPE html> <html lang="en"> <hea ...
- vue.js 组件引用之初级
1. 构造组件,及组件引用:1.1 构造一个组件,1.2 注册一个组件,1.3 实例化Vue()即引用Vue() <!DOCTYPE html> <html lang=" ...
- 应用rbac组件 动态生成一级菜单
动态生成一级菜单 改表结构 需要知道是否是菜单\icon\名称权限表 +字段: is_menu = models.BooleanField(max_length=32,verbose_name='是否 ...
- vue父组件引用子组件方法显示undefined问题原因及解决方法
关于vue父组件引用子组件问题 1.首先导入子组件并且在components中定义子组件 2.引用子组件,并定义ref,ref定义的名称用于 this.$refs所调用的名称 3.调用子组件的方法 ( ...
- vue父组件引用多个相同的子组件传值
没有什么问题是for 解决不了的,我一直深信这句话,当然这句话也是我说的 父组件引用多个相同的子组件传值问题 (这种情况很少遇到) 1 <template> 2 <div> 3 ...
- 在被vue组件引用的 js 文件里获取组件实例this
思路: 通过调用函数 把 组件实例this 传递 到 被应用的 js文件里 实例: 文件结构 在SendThis.vue 文件中引用 了modalConfig.js import modalConf ...
随机推荐
- Git 遇到的坑
ssh出错 gitlab服务器添加完公钥之后,ssh服务器然后报了这个错误 sign_and_send_pubkey: signing failed: agent refused operation ...
- PHP小接
一种是innodb,一种是myisam,两者的主要区别是①myisam不支持事务处理,而innoDB支持事务处理 ②myisam 不支持外键,innoDB支持外键 ③myisam支持全文检索,而inn ...
- python装饰器(备忘)
# 装饰器decorator def deco1(fun): def PRINT(*args,**kwargs): print('------deco1------') fun(*args,**kwa ...
- 在flask中使用swagger(flasgger使用方法及效果展示)
一. 部分代码及效果 from flask import Flask from flasgger import Swagger import config app = Flask(__name__) ...
- sqlalchemy和flask-sqlalchemy的几种分页方法
sqlalchemy中使用query查询,而flask-sqlalchemy中使用basequery查询,他们是子类与父类的关系 假设 page_index=1,page_size=10:所有分页查询 ...
- 获得数值型数组的所有元素之和(分别使用增强for循环和普通for循环)
package com.Summer_0419.cn; /** * @author Summer * 获得数值型数组的所有元素之和 */public class Test_Method13 { pub ...
- CSS实现树形结构 + js加载数据
看到一款树形结构,比较喜欢它的样式,就参照它的外观自己做了一个,练习一下CSS. 做出来的效果如下: li { position: relative; padding: 5px 0; margin:0 ...
- [SDOI2017]天才黑客[最短路、前缀优化建图]
题意 一个 \(n\) 点 \(m\) 边的有向图,还有一棵 \(k\) 个节点的 trie ,每条边上有一个字符串,可以用 trie 的根到某个节点的路径来表示.每经过一条边,当前携带的字符串就会变 ...
- 基于注解处理器开发自动生成getter和setter方法的插件
昨天无意中,逛到了lombok的网站,并看到了首页的5分钟视频,视频中的作者只是在实体类中写了几个字段,就可以自动编译为含setter.getter.toString()等方法的class文件.看着挺 ...
- Maven项目远程部署到Tomcat
目录 Maven项目远程部署到Tomcat 一.Tomcat插件支持的目标 二.系统要求及插件引入 2.1 系统要求 2.2 引入插件 三.远程部署war到tomcat 3.1 添加tomcat管理角 ...