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. 严格控制操作系统账号和权限 在数据库服务器上要严格控制操作系统的账号和权限, ...
随机推荐
- noip16
<凉宫春日的忧郁>专场 T1 考试的时候连题面都没看懂,都没往图论这方面想,更别提最小生成树. 正解: 最小生成树prim,好像是什么欧几里得生成树,寒假时候的东西了,我直接找的blog看 ...
- NOIP 模拟 $20\; \rm y$
题解 \(by\;zj\varphi\) 首先发现一共最多只有 \(2^d\) 种道路,那么可以状压,(不要 \(dfs\),会搜索过多无用的状态) 那么设 \(f_{i,j,k}\) 为走 \(i\ ...
- 【硬件模块】华为NBIOT 使用记录
From: https://liudongdong1.github.io/ 1. background Low power wide area network (LPWAN) has become a ...
- 骨架屏css样式
.chiaroscuro { background: #f2f2f2; animation-duration: 1.5s; animation-name: blink; animation-itera ...
- OGNL表达式入门
package com.scorpion.ognl; import java.util.ArrayList; import java.util.List; import ognl.Ognl; impo ...
- java 内存泄露的几种情况
内存泄漏定义(memory leak):一个不再被程序使用的对象或变量还在内存中占有存储空间. 一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出.内存溢出 out of memory ...
- docker ubuntu中文乱码
docker ubuntu18.04 使用cat查看中文正常,使用vim查看中文乱码. 解决此问题需要修改"/etc/profile"文件. 1.修改前查看本地使用的语言环境: l ...
- 默认标签的解析过程(三)parseDefaultElement
private void parseDefaultElement(Element ele, BeanDefinitionParserDelegate delegate) { if (delegate. ...
- JavaWeb学习总结—Session
转载自:https://www.cnblogs.com/xdp-gacl/p/3855702.html 一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(sess ...
- Spring之属性注入
时间:2017-1-31 23:38 --Bean的属性注入方式有三种注入方式: 1)接口注入: 定义一个接口,定义setName(String name)方法,定义一个类,实现该 ...