权限管理原理:

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

  通过控制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. C++基础知识--DAY4

    今天主要讲的是类中除了构造器析构器以外的拷贝构造器,运算符重载等问题 首先是拷贝构造器 1. copy constructor(拷贝构造) 其也是构造器,其地位和constructor的地位是一样的 ...

  2. Httpclient超时timeout设置

    一:连接超时:connectionTimeout 1:指的是连接一个url的连接等待时间. 二:读取数据超时:soTimeout 1:指的是连接上一个url,获取response的返回等待时间. Fo ...

  3. getchar(),scanf(),gets(),cin,输入字符串

    #include<iostream>#include<stdio.h>#include<string.h>#include<string>using n ...

  4. css 中 position属性

    position属性详解 文档流 1.html中的布局方式分为三种: 标准流(顺序布局):因为html中的元素大体可以分为两大类(a:块级元素:div .H1-H6. table表格  有序级无序列表 ...

  5. mysqldump常用备份参数

    #!/bin/sh DUMP=/usr/bin/mysqldump OUT_DIR=/var/ftp/iips/mysqlbak LINUX_USER=root DB_NAME=yfdmbd DB_U ...

  6. Tomcat虚拟路径访问本地图片失败的问题

    开发过程中,把图片放在本地一个磁盘的路径下.网上搜了下,可以使用tomcat虚拟路径访问本地图片. 这样就不用把图片放在整个项目的webapp目录下了. 1.找到tomcat的server.xml文件 ...

  7. LGV 算法 (Lindström–Gessel–Viennot lemma)

    e(ai,bi)为从起点ai到终点bi的方案数.以上矩阵行列式结果就是(a1,a2,...an) 到 (b1,b2,...bn) 的所有不相交路径的种数. 具体证明的话看wiki,比较长.. 这个定理 ...

  8. Nginx 学习笔记(八)http和https跨域问题解决

    今天在做网易云信的时候,修改了一下源码,使用自己的服务端进行登陆, 注意:这里是使用http域名访问https域名 1.下载源码,配置了IM的域名,im.tinywan.com 没有开启https,具 ...

  9. <HTML深入浅出> 读书笔记

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  10. java位运算(&、|、 ~、>>、>>> 、 ^)

    1.& 与 数字按位进行与运算 101101 110111 100101 2.| 或 数字按位进行或运算 3.~ 非 数字按位取反 4.>> 右移 数字按位进行右移 正数右移高位补 ...