权限管理原理:

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

  通过控制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. 安装SVN并使用IDEA检出项目

    首先去下载小王八:https://tortoisesvn.net/downloads.html 下载完毕,打开 .. ..注意勾选command line工具 .. .. 下一步,打开IDEA,配置S ...

  2. CSS——nth-child()

    nth-child()选择器:CSS3新属性 用法:p:nth-child(2) 选择p标签的父元素 的第二个子元素,并且这个子元素必须是p才起作用 有点绕,有点无厘头,举个栗子: <!DOCT ...

  3. Gym102082 G-What Goes Up Must Come Down(树状数组)

    Several cards with numbers printed on them are lined up on the table. We’d like to change their orde ...

  4. Haproxy 安装初体验

    20180916 haproxy Haproxy简介 Haproxy是一款免费的.快速的和稳定的解决方案,提供HA和LB功能,同时对基于TCP的应用和HTTP的应用进行代理,对于流量很大的web站点来 ...

  5. (map)What Are You Talking About hdu1075

    What Are You Talking About Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 102400/204800 K ...

  6. 关于SSM的小感悟

    这周用SSM框架写了个小项目,真是各种百度啊,最后总算是实现了个登陆功能.刚才一直在修改,想实现登陆进去可以对id进行搜索,出现搜索的整体数据,无奈,一直没能实现.所以就只能留到下周了,到时候会把这个 ...

  7. Struts2_API

    1.访问servletAPI方法1 public String execute() throws Exception { //request域对象==>map (struts2并不推荐使用原生r ...

  8. 使用二进制安装包的方式单机部署MySQL8.0.13

    使用二进制安装包的方式单机部署MySQL8.0.13 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于MySQL的介绍我这里就不多做赘述了,如何下载MySQL详情请参考:MySQ ...

  9. hadoop 开发环境搭建

    一,安装java环境 添加java环境变量 vi /etc/profile   # add by tank export JAVA_HOME=/data/soft/jdk/jdk1.7.0_71 ex ...

  10. Visual Studio连接到TFS

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