python处理权限关系一些注意事项
在模型类中多对多的关系(必须是对象)
如果要获取多对多表中的值,必须使用对象进行搜索,不能直接输入名称
例:这样才能查找到(下面例子是针对,组设置多对多关到用户,现在要根据用户获取相应的组)
user_get=User.objects.get(username=user_name)
user_gp=adminGroup.objects.filter(group=user_get)
或
user_gp=User.objects.filter(username=user_name).values("admingroup__name")
例:以下这样是查找到不到
user_gp=adminGroup.objects.filter(group="admin")或
kkcc="admin"
user_gp=adminGroup.objects.filter(group=kkcc)
例:如果组要查到相应的用户,这样才能查找到(下面例子是针对,组设置多对多关到用户,现在要根据组获取相应的用户)
user_get="superuser"
user_gp=adminGroup.objects.get(group=user_get).多对多的字段名.all()
user_gp=adminGroup.objects.get(group=user_get).username.all()
权限的删除(记住一定要是对象)
1.根据用户查找到组,把组删除
user_user_list=User.objects.get(username="admin5")
user_user_pp=adminGroup.objects.get(group=user_user_list)
user_user_pp.delete()
2.根据用户查找到组,从组中把该用户删除
user_user_list=User.objects.get(username="admin5")
user_user_pp=adminGroup.objects.get(多对多的字段=user_user_list)
user_user_pp.多对多的字段.remove(user_user_list)
例:
user_user_list=User.objects.get(username="admin5")
user_user_pp=adminGroup.objects.get(group=user_user_list)
user_user_pp.group.remove(user_user_list)
user_clear=User.objects.get(username=user_name)
adminGroup.objects.get(group=user_clear).group.remove(user_clear)
adminGroup.objects.get(name=group_name).group.add(user_clear)
3.1.根据组查找权限,并清空(条件:组设定的多对多关系到权)
per_menu_name="组名"
adminGroup.objects.get(name=per_menu_name).permission.clear()
3.2根据组添加权限(条件:组设定的多对多关系到权,注filter对应是set,如果是单个get对应add)
mm_jj=adminPermission.objects.filter(pname=u'上传记录')
adminGroup.objects.get(name=per_menu_name).permission.set(mm_jj)
3.3根据权限给组加权限(条件:组设定的多对多关系到权,注filter对应是set,如果是单个get对应add)
注意:反向操作一定是 权限对象.组模型名_set.add(组的对象)
mm_hh = adminGroup.objects.get(name=per_menu_name)
mm_jj=adminPermission.objects.get(pname=u'上传记录')
mm_jj.admingroup_set.add(mm_hh)
首先需要导入Permission, User模块:
from django.contrib.auth.models import Permission, User #用户 权限
添加权限:
Permission.objects.create(name=u'权限管理',content_type_id=2,codename=u'权限管理描述')
添加用户权限:
perm = Permission.objects.get(codename=u'权限管理')#首先你需要添加"权限管理"这项权限
User.objects.get(username='270001').user_permissions.add(perm)
删除用户权限:
perm = Permission.objects.get(codename=u'权限管理')#首先你需要添加"权限管理"这项权限
User.objects.get(username='270001').user_permissions.remove(perm)
批量添加用户权限:
perm1 = Permission.objects.get(codename=u'权限管理')
perm2 = Permission.objects.get(codename=u'用户管理')
User.objects.get(username='270001').user_permissions.add(perm1,perm2)
清空用户权限:
User.objects.get(username='270001').user_permissions.clear()
查询用户权限,并输出
c = User.objects.get(username='270001').user_permissions.values()
for i in c:
print i
python处理权限关系一些注意事项的更多相关文章
- linux+php+apache web调用python脚本权限问题解决方案
lamp : linux + apache + mysql + php 在上篇随笔中linux+php+apache调用python脚本时出现的问题的根本原因是:apache运行时使用的apache用 ...
- linux+php+apache web调用python脚本权限问题
lamp : linux + apache + mysql + php 在近期项目中使用 linux + apache + php调用python脚本是出现以下权限问题: build/bdist.li ...
- Python魔法方法总结及注意事项
1.何为魔法方法: Python中,一定要区分开函数和方法的含义: 1.函数:类外部定义的,跟类没有直接关系的:形式: def func(*argv): 2.方法:class内部定义的函数(对象的方法 ...
- python第三篇:python、flask关系映射
python中关系映射主要包括三种:一对多关系映射.一对一关系映射.多对多关系映射. 一对多关系映射 一方:Student(学生) 添加关联属性和反向引用 多方:Article(文章) 添加外键关联 ...
- python里正则表达式基础及注意事项
感觉正则匹配是一件很酷的事,用得好的话可以极大地提高编程效率.虽然在html中BeautifulSoup更好用一些,但有时候还是需要使用正则匹配.所以就此做一些学习和使用过程中的笔记. python有 ...
- 【python】继承关系和isinstance
来源:廖雪峰 继承关系是: object -> Animal -> Dog -> Husky 那么,isinstance()就可以告诉我们,一个对象是否是某种类型.先创建3种类型的对 ...
- 在Python中数据类型转换的注意事项
在学习Python的过程接触到了数据类型转化这一过程,在实践的过程中我发现了一个小问题,我们在平常的使用中要一定注意 在str型转换成int型的过程中,str内的内容必须是整数不然会报错 如图: 在转 ...
- python kafka权限校验client.id
kafka集群有权限校验,在连接时需要加入client.id.但pykafka不能配置该选项.搜索了一下,需要使用confluent-kafka 链接: https://blog.csdn.net/l ...
- mysql 开发进阶篇系列 55 权限与安全(安全事项 )
一. 操作系统层面安全 对于数据库来说,安全很重要,本章将从操作系统和数据库两个层面对mysql的安全问题进行了解. 1. 严格控制操作系统账号和权限 在数据库服务器上要严格控制操作系统的账号和权限, ...
随机推荐
- Linux部署达梦数据库(完全版)
环境准备 数据库下载去http://www.dameng.com 1.下载好达梦数据库iso上传(通过xftp)到你自己存在的目录(/opt) 2.将你上传的iso文件挂载到其它的目录下面(mount ...
- NPM使用方法
什么是npm npm是nodejs的包管理器,在当今工程化前端开发过程中,npm包起着举足轻重的作用. 安装npm 作为nodejs的包管理器,npm随着nodejs一起安装的.通常情况下,当我们安装 ...
- 腾讯云TDSQL MySQL版 - 开发指南 分布式事务
由于事务操作的数据通常跨多个物理节点,在分布式数据库中,类似方案即称为分布式事务. TDSQL MySQL版 支持普通分布式事务协议和 XA 分布式事务协议.TDSQL MySQL版(内核5.7或以上 ...
- vs2019编写c++的静态链接库并自己使用
参考网址:https://blog.csdn.net/flame333/article/details/108346305 静态链接库1.新建一个静态库项目,其中有两个头文件,两个源文件 其中比较重要 ...
- Redis 在项目中合理使用经验总结
转自:https://my.oschina.net/u/920698/blog/3031587 背景 Redis 是一个开源的内存数据结构存储系统. 可以作为数据库.缓存和消息中间件使用. 支持多种类 ...
- Linux命令全训练
一.实验目的 为后续上机实验做准备,熟悉常用的Linux操作. 二.实验平台 操作系统:Ubuntu14.04 三.实验内容和要求 1.Linux系统中的常用快捷键 Tab 自动补全 上下箭头 显示历 ...
- Python - 面向对象编程 - 什么是 Python 类、类对象、实例对象
什么是对象和类 https://www.cnblogs.com/poloyy/p/15178423.html Python 类 类定义语法 最简单的类定义看起来像这样 class ClassName: ...
- 我的第一个npm包:wechat-menu-editor 基于Vue的微信自定义菜单编辑器
wechat-menu-editor 微信自定义菜单编辑器 前言 在做微信公众号相关开发时,基本上会去开发的功能就是微信自定义菜单设置的功能,本着不重复造轮子的原则,于是基于Vue封装的一个微信自定义 ...
- Java调用腾讯云短信接口,完成验证码的发送(不成功你来砍我!!)
一.前言 我们在一些网站注册页面,经常会见到手机验证码的存在,这些验证码一般的小公司都是去买一些大的厂家的短信服务,自己开发对小公司的成本花费太大了!今天小编就带着大家来学习一下腾讯云的短信接口,体验 ...
- ☕【Java技术指南】「并发编程专题」Fork/Join框架基本使用和原理探究(基础篇)
前提概述 Java 7开始引入了一种新的Fork/Join线程池,它可以执行一种特殊的任务:把一个大任务拆成多个小任务并行执行. 我们举个例子:如果要计算一个超大数组的和,最简单的做法是用一个循环在一 ...