Django权限管理测试
测试内容:当我单击登录页面登录的时候页面会弹出当前用户的个人信息

当我点击提交的时候可以看到我当前用户的所有权限:

测试成功,接下来看一下后台的简单代码:
class User(models.Model):
'''
用户信息表,与角色多对多(role)
'''
username = models.CharField(max_length=32,verbose_name="用户名")
password = models.CharField(max_length=32,verbose_name="密码")
email = models.CharField(max_length=32,verbose_name="邮箱")
roles = models.ManyToManyField(to="Role",related_name="user_role",verbose_name="具有的角色",blank=True) class Meta:
verbose_name_plural = "用户表"
def __str__(self):
return self.username class Role(models.Model):
'''
角色表,和权限表多对多(permission)
'''
title = models.CharField(max_length=32,verbose_name="角色名")
permission = models.ManyToManyField(to="Permission",verbose_name="具有的所有权限",related_name="role_permission",blank=True) class Meta:
verbose_name_plural = "角色表"
def __str__(self):
return self.title class Permission(models.Model):
'''
权限表,与用户信息表多对多(User)
'''
url = models.CharField(max_length=32,verbose_name="含正则的URL")
title = models.CharField(max_length=32,verbose_name="标题")
is_menu = models.BooleanField(verbose_name="是否是菜单") class Meta:
verbose_name = "权限表"
def __str__(self):
return self.title
models
from django.shortcuts import render,HttpResponse,redirect
from . import models
# Create your views here. def login(request):
if request.method == 'GET':
return render(request,"login.html")
else:
username = request.POST.get("username")
password = request.POST.get("password")
user = models.User.objects.filter(username=username,password=password).first() #获得当前用户的名字
role_list = user.roles.all().values_list("title") #通过user的外键获取到当前用户的角色
permission_list = user.roles.values_list("permission__title").distinct() #通过双下划线查找到权限,必须去重,否则会重复
if user:
return render(request,"index.html",locals())
else:
return HttpResponse("滚你大爷的蛋蛋...")
views视图
前端页面就不看了,测试效果如上,每个用户登录之后都可以看到他的角色和相应的权限
Django权限管理测试的更多相关文章
- 【Python】django权限管理
参考:http://www.cnblogs.com/esperyong/ 参考:https://docs.djangoproject.com/en/1.8/topics/auth/default/#t ...
- 一.8.django权限管理/drf权限管理
1.什么是权限管理: .权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源 .权限管理好比如钥匙,有了钥匙就能把门打开,但是权限设置是有级别之分的,假如这个系 ...
- Django 权限管理(二)
权限菜单展示 1.展示的效果 实现该效果,涉及到的核心点(突破点) 1. 权限分类: (1)菜单权限 (主要用来展示的权限(url)如查看权限 url, 如上图中的每个权限都归类为菜单权限,主要用来 ...
- django权限管理(一)
权限:权限就是一个包含正则的url. Rbac 权限管理: Role-Based Access Control,基于角色的访问控制.用户通过角色与权限进行关联,一个用户可以有多个角色,一个角色可以有多 ...
- Django 权限管理
对于Django而言,虽然自带了一些基本的通用权限限制,但现实中,可能我们更希望自己去定义业务权限划分 Django对于权限这块的部分验证方法 user = request.user user.is_ ...
- django权限管理
当我们为应用创建一个Models, 在同步到数据库里,django默认给了三个权限 ,就是 add, change, delete权限. 首先,我们创建一个perm_test的project, 然后再 ...
- Django之权限管理
Django权限管理之初步完整版 项目背景:这是一个权限管理系统(给一些角色和他们的权限指URL和页面可以删除的按钮比如:增删改查) 使用到了中间件,和初始化权限,使用了admin的后台管理系统. 我 ...
- 【Ecshop】后台菜单与权限管理
主要php文件: 1,admin/includes/inc_menu.php ECSHOP管理中心菜单数组--配置菜单组及URL 2,languages/zh_cn/admin/common.php ...
- [Django]用户权限学习系列之权限管理界面实现
本系列前三章: http://www.cnblogs.com/CQ-LQJ/p/5604331.htmlPermission权限基本操作指令 http://www.cnblogs.com/CQ-LQJ ...
随机推荐
- Spring Boot整合 JdbcTemplate
(1) 在pom.xml加入jdbcTemplate的依赖: (2) 编写DemoDao类,声明为:@Repository,引入JdbcTemplate (3) 编写DemoService类,引入De ...
- Java 常量池存放的是什么
public class Test{ Integer i1 = 127 ; // 常量池本来就有,直接饮用常量池. String s1 = new String("aaaa"); ...
- 17082 两个有序数序列中找第k小(优先做)
17082 两个有序数序列中找第k小(优先做) 时间限制:1000MS 内存限制:65535K提交次数:0 通过次数:0 题型: 编程题 语言: G++;GCC;VC Description 已 ...
- 《On Writing Well 30th Anniversa》【PDF】下载
<On Writing Well 30th Anniversa>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382210 内容简 ...
- cors解决Web跨域访问问题
首先了解一下什么是跨域以及解决的几种常见方式. 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器施加的安全限制. 所谓同源是指,域名,协议,端口均相同. 举例: 相对于 ...
- express学习
一.入门 实际开发中一般使用express应用生成器(express-generator),直接生成项目目录,npm安装后再安装需要的依赖: 项目目录:app.js定义并导出整个应用: /bin/ww ...
- 串口调试者v2.1------开源c#串口调试工具
第一步:上图 第二步:上代码 >>>>>>>>>>>源代码下载<<<<<<<<< ...
- NumPy学习笔记 三 股票价格
NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...
- KVO键值观察的具体实现
1.KVO简介 KVO是Objective-C对观察者设计模式的一种实现,它提供一种机制,指定一个被观察对象(如A类),当对象中的某个属性发生变化的时候,对象就会接收到通知,并作出相应的处理.在MVC ...
- 一个超级简单的demo带你走进redux的大坑
先上代码 import React, { Component } from 'react'; import ReactDOM from 'react-dom'; import { createStor ...