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 ...
随机推荐
- redis主从配置+哨兵模式
1.搭建redis主从,一个master两个slave,加一个哨兵监听(sentinel),可以新建三个虚拟机,模拟环境,我的电脑没那么多虚拟机,就在一台虚拟机上弄的. 2.安装redis,如果是三台 ...
- web.config中配置数据库(多数据)连接的两种方式
这是我的第一篇文章,既然是第一篇了,那就从最基础的只是说起--web.config中配置数据库连接. 网上有很多这方面的资料,但发现并没有一篇从头到位很清楚明了说完的,今天就把我的整理写在这里吧. 在 ...
- Docker 安装入门 --基础镜像
安装Docker1.Docker命令安装 yum install docker //安装docker包 service docker start //设置服务启动 chkconfig docker ...
- Java编程学习知识点分享 入门必看
Java编程学习知识点分享 入门必看 阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软 ...
- 【原创】java NIO FileChannel 学习笔记 新建一个FileChannel
首先使用FileChannel 的open方法获取一个FileChannel对象.下面这段代码是FileChannel中open方法的代码. public static FileChannel ope ...
- C# 使用 CancellationTokenSource 终止线程
http://blog.csdn.net/hezheqiang/article/details/51966511 我们在多线程中通常使用一个 C# 使用 CancellationTokenSource ...
- 鸟哥的linux私房菜学习-(一)优缺点分析以及主机规划与磁盘分区
一.linux的优缺点 那干嘛要使用Linux做为我们的主机系统呢?这是因为Linux有底下这些优点: 稳定的系统:Linux本来就是基于Unix概念而发展出来的操作系统,因此,Linux具有与Uni ...
- leetcode — copy-list-with-random-pointer
import java.util.*; /** * * Source : https://oj.leetcode.com/problems/copy-list-with-random-pointer/ ...
- Vue 爬坑之路(五)—— 组件进阶
组件(Component)是 Vue.js 最强大的功能之一,之前的文章都只是用到了基本的封装功能,这次将介绍一些更强大的扩展. 一.基本用法 在使用 vue-cli 创建的项目中,组件的创建非常方便 ...
- JS中call,apply,bind方法的总结
why?call,apply,bind干什么的?为什么要学这个? 一般用来指定this的环境,在没有学之前,通常会有这些问题. var a = { user: "小马扎", fn: ...