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默认的权限管理 ...
随机推荐
- 需要正确安装 Microsoft.Windows.ShellExperienceHost 和 "Microsoft.Windows.Cortana" 应用程序。
windows 10 开始菜单修复工具 Win10开始菜单修复工具出现的原因,自从升级到Windows 10,一直BUG不断,而其中有一个BUG非常的让你印象深刻,就是开始菜单无响应,你用着用着电脑 ...
- Application对象、Session对象、Cookie对象、Server对象初步认识
Application对象:记录应用程序参数的对象 用于共享应用程序级信息,即多个用户共享一个Application对象.在第一个用户请求ASP.NET文件时,将启动应用程序并创建Applicatio ...
- 基于吉日嘎拉的通用权限管理WebForm版扩展:字典选项管理和缓存管理
关于字典管理,其实就是2个表,一个表记录字典和对应表,另一个表记录字典内容.我这里改名为字典选项,其实是一个意思.直接上图: 这里的字典选项是分子系统的,每个子系统可以有自己的单独字典,方便管理.但是 ...
- 【Java每日一题】20161208
package Dec2016; import java.util.List; public class Ques1208 { public static void add(List<? ext ...
- 【Java每日一题】20161025
20161024问题解析请点击今日问题下方的"[Java每日一题]20161025"查看 package Oct2016; import static java.lang.Math ...
- (学习笔记)HTML的<link>标签
在HTML中<link>标签用于定义文档与外部资源的关系. <link>标签只存在于head部分. <head> <link rel="styles ...
- InfluxDB学习之InfluxDB的基本操作
InfluxDB提供类SQL语法,如果熟悉SQL的话会非常容易上手.本文就为大家介绍一下InfluxDB的基本操作. InfluxDB提供类SQL语法,如果熟悉SQL的话会非常容易上手. 本文 ...
- opencart二次开发小记
在controller中如果要调用model中数据或说方法可以这样写 $this->load->model('catalog/information');//model中的informat ...
- http gzip 解压缩
var sContentEncoding = httpRespone.Headers["Content-Encoding"]; if(sContentEncoding == &qu ...
- SQL Server代码如何快速格式化
在SQL Server中我们经常需要编写各种SQL脚本,例如存储过程和函数等,由于在编写过程中,经常会进行调整,有些关键字我们用的大写,有的我们用的小写,有的后面结束用:分割有的又没有.对于有强迫症的 ...