rbac models
class Permission(models.Model):
"""
权限表
"""
perm_name = models.CharField(verbose_name='权限名', max_length=)
url = models.CharField(verbose_name='含正则的URL地址', max_length=, unique=True) code_name = models.CharField(verbose_name='代码', max_length=, unique=True, null=False, blank=False) # 视图名代码 def __str__(self):
return self.code_name class Meta:
verbose_name = "权限"
verbose_name_plural = verbose_name class Role(models.Model):
"""
角色表
"""
role_name = models.CharField(verbose_name='角色名', max_length=)
permissions = models.ManyToManyField(verbose_name='拥有的所有权限', to=Permission, blank=True) def __str__(self):
return self.role_name class Meta:
verbose_name = "角色"
verbose_name_plural = verbose_name class AdminUser(AbstractUser):
""" 管理员信息 """
mobile = models.CharField(max_length=, verbose_name='手机号码', unique=True)
roles = models.ManyToManyField(verbose_name='拥有的所有角色', to=Role, blank=True) def __str__(self):
return self.username class Meta:
db_table = 'admin_user'
verbose_name = '管理者'
verbose_name_plural = verbose_name
class Menu(models.Model):
"""
菜单
"""
title = models.CharField(verbose_name='菜单', max_length=)
icon = models.CharField(verbose_name='图标', max_length=) def __str__(self):
return self.title class Permission(models.Model):
"""
权限表
"""
title = models.CharField(verbose_name='标题', max_length=)
url = models.CharField(verbose_name='含正则的URL', max_length=, unique=True) name = models.CharField(verbose_name='代码', max_length=, unique=True, null=False, blank=False) pid = models.ForeignKey(verbose_name='默认选中权限', to='Permission', related_name='ps', null=True, blank=True,
help_text="对于无法作为菜单的URL,可以为其选择一个可以作为菜单的权限,那么访问时,则默认选中此权限",
limit_choices_to={'menu__isnull': False}, on_delete=models.SET_NULL) menu = models.ForeignKey(verbose_name='菜单', to='Menu', null=True, blank=True, help_text='null表示非菜单',
on_delete=models.SET_NULL) def __str__(self):
return self.title class Role(models.Model):
"""
角色
"""
title = models.CharField(verbose_name='角色名称', max_length=)
permissions = models.ManyToManyField(verbose_name='拥有的所有权限', to='Permission', blank=True) def __str__(self):
return self.title class UserInfo(models.Model):
"""
用户表
""" name = models.CharField(verbose_name='用户名', max_length=)
password = models.CharField(verbose_name='密码', max_length=)
email = models.CharField(verbose_name='邮箱', max_length=)
roles = models.ManyToManyField(verbose_name='拥有的所有角色', to='Role', blank=True) def __str__(self):
return self.name
.
rbac models的更多相关文章
- rbac组件权限按钮,菜单,可拔插
		
1.通用模板 overflow: auto; //在a和b模板中进行切换 a 模板 :左侧菜单跟随滚动条 b模板 左侧以及上不动 **** <!DOCTYPE html> <h ...
 - rbac权限+中间件
		
1.权限组件rbac 1.什么是权限 1 项目与应用 2 什么是权限? 一个包含正则表达式url就是一个权限 who what how ---------->True or Flase 2.版本 ...
 - Django实现Rbac权限管理
		
权限管理 权限管理是根据不同的用户有相应的权限功能,通常用到的权限管理理念Rbac. Rbac 基于角色的权限访问控制(Role-Based Access Control)作为传统访问控制(自主访问, ...
 - CRM项目之RBAC权限组件-day26
		
写在前面 上课第26天,打卡: 世间安得双全法 不负如来不负卿 s17day26 CRM项目 项目概要:XX公司CRM - 权限管理,公共组件,app ***** - 熟悉增删改查,Low *** - ...
 - 10.11 rbac权限
		
2018-10-11 12:25:11 现在写代码时候,不要好多代码放在一块!注重解耦!!!!! 把权限放到中间件里面,每次访问的时候都用到! 自己的网站弄完了,博客网站已经正式上线,就是有点丑! w ...
 - RBAC 继完善代码之后的,再一次完善
		
在上一篇文章中,我的中间件是 保存在我的web 业务app 中的.但是rbac我想要完成的是一个 组件的功能, 所以这个验证的 中间件, 何不放到rbac的app之中: 为了太乱先放一个项目的目录图 ...
 - 基于RBAC权限验证, 中间价middleware实现,  views 登录视图代码
		
废话不多说 上代码: 基础实现: rom django.shortcuts import HttpResponse, redirect, render from django.http import ...
 - 应用rbac组件  动态生成一级菜单
		
动态生成一级菜单 改表结构 需要知道是否是菜单\icon\名称权限表 +字段: is_menu = models.BooleanField(max_length=32,verbose_name='是否 ...
 - 2、rbac组件 后台布局模板,权限按钮,菜单,可拔插,路径重定向
		
1.后台布局管理 https://www.cnblogs.com/venicid/p/7772742.html#_label0 1.通用模板 overflow: auto; //在a和b模板中进行切换 ...
 
随机推荐
- win10 store 无法连接网络(原创)
			
当你试过所有的解决攻略 都无效时,那么使用这个教程 关闭以下的蓝色框里的
 - C# 串口类SerialPort的使用方法
			
序言:最近做了一个智能体育项目——跆拳道积分系统,硬件部分会向软件传入振动值等数据,链接方式为串口,所以用到SerialPort类. 值得注意的是: DataReceived 方法,当串口缓冲区有数据 ...
 - 泛型理解及应用(二):使用泛型编写通用型Dao层
			
相信目前所有的IT公司网站在设计WEB项目的时候都含有持久层,同样地使用过Hibernate的程序员都应该看过或者了解过Hibernate根据数据库反向生成持久层代码的模板.对于Hibernate生成 ...
 - 【NET CORE微服务一条龙应用】第二章 配置中心使用
			
背景 系列目录:[NET CORE微服务一条龙应用]开始篇与目录 在分布式或者微服务系统里,通过配置文件来管理配置内容,是一件比较令人痛苦的事情,再谨慎也有湿鞋的时候,这就是在项目架构发展的过程中,配 ...
 - MySQLdump之single-transaction详解
			
MySQLdump之single-transaction详解 single-transaction 开启general log选项 查看目前general log的情况 mysql> show ...
 - js判断字符串是否在数组中
			
先加一个扩展函数: Array.prototype.contains = function (obj) { var index = this.length; while (index–) { ...
 - c# 导出表格
			
var record = m_editor.getMasterRecord(); var Check_Id = record.Check_Id; var url = "/Storage/St ...
 - c#unicode,中文互转
			
/// <summary> /// 中文转unicode /// </summary> /// <returns></returns> public s ...
 - [android] 手机卫士手机实现短信指令获取位置
			
获取位置 新建一个service的包 新建一个GPSService类继承系统的Service类 清单文件中注册一下 重写onCreate()方法,服务创建的时候回调 重写onDestroy()方法, ...
 - [android] 手机卫士应用程序更新和签名
			
弹出升级对话框 获取AlertDialog.Builder对象,通过new出来 调用Builder对象的setTitle()方法,参数:文本 调用Builder对象的setMessage()方法,参数 ...