django 基于proxy实现用户权限管理
项目中经常会遇到用户权限管理的问题,django adminsite已经提供非常实用的用户权限管理机制。不过有些时候,我们希望根据相关用户属性来过滤adminsite中显示的内容。下文将结束如何实现:
原始类
假设我有这么一个问卷类,基于这个类可以实现增删改查的功能
class wenjuan(models.Model):
"""
问卷
"""
name=models.CharField(u'问卷名称',max_length=128)
breif=models.TextField(u'问卷简介')
zhichixinxi=models.TextField(u'支持信息',default=u'技术支持',null=True,blank=True)
danwei=models.ForeignKey(Department, verbose_name=u'所属单位')
status = models.SmallIntegerField(choices=WENJUAN_STATUS, verbose_name=u'状态')
fabu_time = models.DateTimeField(verbose_name=u'发布日期',null=True,blank=True)
jiezhi_time = models.DateTimeField(verbose_name=u'截止日期',null=True,blank=True)
create_time = models.DateTimeField(auto_now=True, verbose_name=u'创建日期',null=True,blank=True)
cjUser=models.ForeignKey(Users,related_name='users_cj', verbose_name=u'所属用户',null=True,blank=True)
def __unicode__(self):
return self.name
class Meta:
verbose_name = u"问卷"
verbose_name_plural = verbose_name
#app_label = _(u'b')
子类
基于子类实现根据权限进行不同显示,在demo项目中,我们将实现用户只能查询自己的创建的问卷
class chakanWenjuan(wenjuan):
class Meta:
proxy=True
verbose_name=_(u'统计结果')
verbose_name_plural=_(u'统计结果')
xadminx中,我们需要设置一下queryset 过滤
#-------------------------------------------------
class chakanWenjuanAdmin(object):
list_display = ('name','danwei','cjUser',)
reversion_enable = True
search_fields = ['name',]
def queryset(self):
qs = super(chakanWenjuanAdmin, self).queryset()
if self.user.is_superuser:
return qs
else:
myuser=Users.objects.get(user__id=self.user.id)
return qs.filter(cjUser=myuser)
xadmin.site.register(chakanWenjuan,chakanWenjuanAdmin)
如果是超级用户,那么全部显示。如果是普通用户,根据user进行筛选。
预告
下一篇将介绍,如何在adminsite中自定义列
django 基于proxy实现用户权限管理的更多相关文章
- 基于EasyUI Treegrid的权限管理资源列表
1. 前言 最近在开发系统权限管理相关的功能,主要包含用户管理,资源管理,角色管理,组类别管理等小的模块.之前的Web开发中也用过jQueryEasyUI插件,感觉这款插件简单易用,上手很快.以前用到 ...
- RDIFramework.NET ━ 9.8 用户权限管理 ━ Web部分
RDIFramework.NET ━ .NET快速信息化系统开发框架 9.8 用户权限管理 -Web部分 在实际应用中我们会发现,权限控制会经常变动,如:需要调整角色的分配,需要收回与授予某些角色.用 ...
- Jenkins配置基于角色的项目权限管理--转
本文将介绍如何配置jenkins,使其可以支持基于角色的项目权限管理. 由于jenkins默认的权限管理体系不支持用户组或角色的配置,因此需要安装第三发插件来支持角色的配置,本文将使用Role Str ...
- Jenkins配置基于角色的项目权限管理
转自: http://www.cnblogs.com/gao241/archive/2013/03/20/2971416.html, 版权归原作者. 本文将介绍如何配置jenkins,使其可以支持基于 ...
- vue基于d2-admin的RBAC权限管理解决方案
前两篇关于vue权限路由文章的填坑,说了一堆理论,是时候操作一波了. vue权限路由实现方式总结 vue权限路由实现方式总结二 选择d2-admin是因为element-ui的相关开源项目里,d2-a ...
- 基于Proxy的小程序状态管理
摘要: 小程序状态管理. 作者:wwayne 原文:基于Proxy的小程序状态管理 Fundebug经授权转载,版权归原作者所有. 微信小程序的市场在进一步的扩大,而背后的技术社区仍在摸索着最好的实践 ...
- ClickHouse学习系列之二【用户权限管理】
背景 最近花了些时间看了下ClickHouse文档,发现它在OLAP方面表现很优异,而且相对也比较轻量和简单,所以准备入门了解下该数据库系统.在安装完之后首先做的应该如何设置用户密码以及权限控制.因为 ...
- (十三)整合 SpringSecurity 框架,实现用户权限管理
整合 SpringSecurity 框架,实现用户权限管理 1.Security简介 1.1 基础概念 1.2 核心API解读 2.SpringBoot整合SpringSecurity 2.1 流程描 ...
- jenkins配置基于角色的项目权限管理设置步骤
jenkins配置基于角色的项目权限管理设置步骤 本文链接:https://blog.csdn.net/russ44/article/details/52276222 由于jenkins默认的权限管理 ...
随机推荐
- log4net的配置详解
log4net是一款优秀的第三方日志框架,可以很容易的加载到开发项目中(引用log4net的dll,再配置些基本参数即可),帮助程序员把日志信息输出到各种不同的目标,常见的有文本.数据库.window ...
- asp.net MVC4的执行流程
MVC在底层和传统的asp.net是一致的,在底层之上,相关流程如下: 1)Global.asax里,MvcApplication对象的Application_Start()事件中,调用 RouteC ...
- jquery时间轴幻灯展示源代码
查看效果:http://hovertree.com/texiao/jquery/75/ 源代码下载:http://hovertree.com/h/bjaf/8jlpc2wu.htm 效果图如下: 代码 ...
- iOS阶段学习第六天笔记(数组)
iOS学习( ...
- An Introduction to Stored Procedures in MySQL 5
https://code.tutsplus.com/articles/an-introduction-to-stored-procedures-in-mysql-5--net-17843 MySQL ...
- Firemonkey ListView 点击事件
Firemonkey ListView 的点击事件一直让人摸不着头绪(各平台触发规则不太相同),因为它提供了点击相关的事件就有如下: OnChange:改变项目触发. OnClick:点击触发. On ...
- C语言的关键字,运算符,标识符
关键字 数据类型修饰相关 auto按照自动的方式进行变量的存储 const定义常量或常参数 extern声明外部变量或函数 register指定变量的存储类型是寄存器变量 static指定变量的存储类 ...
- Exception loading sessions from persistent storage
严重: Exception loading sessions from persistent storage java.io.EOFException 删除Tomcat里面的work/Catalina ...
- Monkey测试3——Monkey测试结果分析
Monkey测试结果分析 一. 初步分析方法: Monkey测试出现错误后,一般的差错步骤为以下几步: 1. 找到是monkey里面的哪个地方出错 2. 查看Monkey里面出错前的一些事件动作,并手 ...
- 一个完整的类用来生成RSACryptoServiceProvider单例类(.NET)
internal class CcbRsaCryptProvider { private static RSACryptoServiceProvider _providerForSign; priva ...