权限管理原理:

  不同角色拥有不同的角色权限,所以能否访问的页面也就不相同.

  通过控制URL使用户访问到不同的URL,从而达到权限控制的目的.

设计权限数据库

  权限管理

from django.db import models

# Create your models here.

class Userinfo(models.Model):
uname = models.CharField(max_length=30)
pwd = models.CharField(max_length=30) class Meta:
verbose_name_plural = '用户表' def __str__(self):
return self.uname class Juese(models.Model):
jsm = models.CharField(max_length=30) class Meta:
verbose_name_plural = '角色表' def __str__(self):
return self.jsm class UtoJ(models.Model):
u = models.ForeignKey(Userinfo,on_delete=models.CASCADE)
j = models.ForeignKey(Juese,on_delete=models.CASCADE) class Meta:
verbose_name_plural = '用户角色表' def __str__(self):
return "%s - %s "%(self.u.uname,self.j.jsm) class Quanxian(models.Model):
qxname = models.CharField(max_length=30)
url = models.CharField(max_length=30)
menu = models.ForeignKey('Menu',on_delete=models.CASCADE,null=True,blank=True) class Meta:
verbose_name_plural = '职能表' def __str__(self):
return "%s - %s "%(self.qxname,self.url) class Zsgc(models.Model):
zsgc = models.CharField(max_length=30)
url = models.CharField(max_length=30) class Meta:
verbose_name_plural = 'ZSGC表' def __str__(self):
return self.zsgc class Qtoz(models.Model):
q = models.ForeignKey(Quanxian,on_delete=models.CASCADE)
z = models.ForeignKey(Zsgc, on_delete=models.CASCADE)
class Meta:
verbose_name_plural = '权限表' def __str__(self):
return "%s - %s - %s/?p=%s"% (self.q.qxname,self.z.zsgc,self.q.url,self.z.url) class JtoQtoZ(models.Model):
j = models.ForeignKey(Juese, on_delete=models.CASCADE)
qz = models.ForeignKey(Qtoz, on_delete=models.CASCADE) class Meta:
verbose_name_plural = '角色权限表' def __str__(self):
return "%s >>> %s"% (self.j.jsm,self.qz) class Menu(models.Model):
Mname = models.CharField(max_length=32)
zgl = models.ForeignKey('self',related_name='z', on_delete=models.CASCADE,null=True,blank=True)
class Meta:
verbose_name_plural = '菜单栏' def __str__(self):
return self.Mname

获取用户信息、用户权限信息、菜单信息

   # 取用户角色 uname  juese
data = models.Juese.objects.filter(utoj__u__uname='xmei') # 获取当前用户角色的权限 uname_juese quanxian_zsgc
# 数据去重 (.values(字段).distinct()) 排除不必要的数据 .exclude(qz__q__menu__isnull=True)
data2 = models.JtoQtoZ.objects.filter(j__in=data).exclude(qz__q__menu__isnull=True).values('qz__q__qxname', 'qz__q__url','qz__q__menu').distinct()
# 获得菜单数据
data3 = models.Menu.objects.values("id", 'Mname', 'zgl').all()

Django学习手册 - 权限管理(一)的更多相关文章

  1. Django学习手册 - 权限管理(二)

    从数据库获取数据后,对数据进行清洗 目标: 数据1,存放至session 中的数据 数据2,显示至前端的菜单数据 清洗数据: 1.session存放的数据:(menu_leaf_dict) 2.前端菜 ...

  2. MongoDB学习笔记—权限管理

    1.MongoDB权限介绍 a 上篇文章中,我们在Linux下配置了MongoDB环境并且将其设置为服务随机器启动而启动,那么接下来这篇文章我们就来简单说一下MongoDB下对登录用户权限的管理. b ...

  3. Django实现Rbac权限管理

    权限管理 权限管理是根据不同的用户有相应的权限功能,通常用到的权限管理理念Rbac. Rbac 基于角色的权限访问控制(Role-Based Access Control)作为传统访问控制(自主访问, ...

  4. 十二、基于Django实现RBAC权限管理

    一.RBAC概述 RBAC(Role-Based Access Control,基于角色的访问控制),通过角色绑定权限,然后给用户划分角色. 从企业的角度来说,基本上是按照角色来划分职能.比如,CEO ...

  5. django 用户与权限管理

    django中使用content_type表进行存储app与model的关系.在permission表中设立了name(权限的名字,中英文均可)content_type_id(与content_typ ...

  6. linux 学习8 权限管理

    第八章 权限管理 8.1 ACL权限 8.2 文件特殊权限 8.3 文件系统属性chattr权限 8.4 系统命令sudo权限 8.1 ACL权限 ACL权限简介与开启 查看与设定ACL权限 最大有效 ...

  7. [转]Oracle学习笔记——权限管理

    本文转自:http://www.cnblogs.com/whgw/archive/2011/10/30.html 一.系统的默认用户 1)sys用户是超级用户,具有最高权限,具有sysdba角色,有c ...

  8. Shiro基础学习(一)—权限管理

    一.基本概念 1.权限管理      只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源.     权限管理 ...

  9. django学习-22.admi管理后台页面的文案展示等相关配置

    目录结果 1.前言 2.完整的操作步骤 2.1.第一步:对[settings.py]里的相关常量的值做如下修改 2.2.第二步:重启django项目[helloworld]的服务 2.3.第三步:重新 ...

随机推荐

  1. JVM调优工具

    JMap 首先要知道Java进程的pid. Windows: .. .. .. Linux: ps -ef | grep java 查看堆栈信息(jmap -heap pid) jmap -heap ...

  2. SpringCloud-初识

    说道SpringCloud,原来就去了解过,也有很大兴趣,只是当初不知道这是个什么东西.在它之前,我学习Spring,在官网肆无忌惮的逛的时候,发现了SpringBoot,那个时候就打算开始学习Spr ...

  3. Luogu P2336 [SCOI2012]喵星球上的点名

    题目链接 \(Click Here\)_ \(200\)行纯干货的代码,一发\(WA\)掉真的是让人窒息,幸好最后找到了锅在哪.(差点就要弃掉了\(QAQ\)) [调出来的时候真的是要高兴到哭出来了\ ...

  4. redis主从复制配置(1)

    我们来配置一个一主两从的服务,根据前面写的已经配置好的redis基础上进行主从配置 一:进入redis的配置目录 cd /usr/local/redis 创建下面3个目录,命令为:make -p /u ...

  5. kubeadm安装Kubernetes V1.10集群详细文档

    https://www.kubernetes.org.cn/3808.html?tdsourcetag=s_pcqq_aiomsg 1:服务器信息以及节点介绍 系统信息:centos1708 mini ...

  6. Centos7安装Mysql5.7方法总结 - 实操手册

    Centos7.x版本下针对Mysql的安装和使用多少跟之前的Centos6之前版本有所不同的,废话就不多赘述了,下面介绍下在centos7.x环境里安装mysql5.7的几种方法:一.yum方式安装 ...

  7. Visual Studio连接到TFS

    我在学校自己使用git,公司使用VSS,然后这个项目又使用TFS.Visual Studio连接到TFS是这样滴 1.点连接到团队项目 2.添加TFS服务器的url,写到你的http:XXX/tfs就 ...

  8. CentOS7 下 Hadoop 分布式部署

    Hadoop 服务划分 使用三台节点,集群部署规划如下 服务\主机 hadoop1 hadoop2 hadoop3 HDFS NameNode DataNode DataNode SecondaryN ...

  9. Kafka技术内幕 读书笔记之(三) 消费者:高级API和低级API——消费者消费消息和提交分区偏移量

    消费者拉取钱程拉取每个分区的数据,会将分区的消息集包装成一个数据块( FetchedDataChunk )放入分区信息的队列中 . 而每个队列都对应一个消息流( KafkaStream ),消费者客户 ...

  10. 再次回归 Spark-- 转

    原文地址 combineByKey 三个参数 val scores = sc.parallelize(Array(("jake",80.0),("jake",9 ...