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默认的权限管理 ...
随机推荐
- 【转】ASP.NET"正在中止线程"错误原因
最近做的系统中老出现的一些问题不太明白,在使用 Response.End.Response.Redirect 或 Server.Transfer 时出现 ThreadAbortException , ...
- 动态dynamically变更母版_Layout页body标签css的class
这个功能演示是Insus.NET最近想实现的一个功能,就是动态dynamically变更母版_Layout页body标签的样式css的class. 很多视图共同一个母版_Layout页,但是某一个视图 ...
- HoverTree开发日志之验证码
HoverTree是一个ASP.NET的开源CMS,目前包含文章系统,图库和留言板功能.代码完全开放,文章内容页生成了静态的HTM页面,留言板提供留言审核功能,文章可以发布HTML源代码,图片上传同时 ...
- 【C#】第3章学习要点(一)--整体把握
分类:C#.VS2015 创建日期:2016-06-18 使用教材:(十二五国家级规划教材)<C#程序设计及应用教程>(第3版) 一.使用别人已经设计好的类简化你的代码编写工作量 当让你去 ...
- C# 模拟登陆并继续访问其他页面
using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Net;usi ...
- jquery更改加载图片大小
<script type="text/javascript"> $("img").css("width","80%&q ...
- [PHP] 使用Socket提供Http服务
我的SimpleLoader里面的一块 https://github.com/taoshihan1991/simpleloader <?php namespace Server; class S ...
- CI框架源码阅读笔记1 - 环境准备、基本术语和框架流程
最开始使用CI框架的时候,就打算写一个CI源码阅读的笔记系列,可惜虎头蛇尾,一直没有行动.最近项目少,总算是有了一些时间去写一些东西.于是准备将之前的一些笔记和经验记录下来,一方面权作备忘,另一方面时 ...
- 详解spring 每个jar的作用
spring.jar 是包含有完整发布模块的单个jar 包.但是不包括mock.jar, aspects.jar, spring-portlet.jar, and spring-hibernate2. ...
- 为jQuery-easyui的tab组件添加右键菜单功能
加入了右击TAB选项卡时显示关闭的上下文菜单 具体实现代码: 右键菜单 HTML: <div id="mm" class="easyui-menu" st ...