详解python如何在django中为用户模型添加自定义权限


Posted in Python onOctober 15, 2018

django自带的认证系统能够很好的实现如登录、登出、创建用户、创建超级用户、修改密码等复杂操作,并且实现了用户组、组权限、用户权限等复杂结构,使用自带的认证系统就能帮助我们实现自定义的权限系统达到权限控制的目的。

在django中默认情况下,syncdb运行时安装了django.contrib.auth,它会为每个模型创建默认权限,如foo.can_change,foo.can_delete和foo.can_add.要向模型添加自定义权限,可以添加类Meta:在模型下,并在其中定义权限,如此处所述

我的问题是,如果我要为用户模型添加自定义权限,该怎么办?像foo.can_view.我可以用下面的代码片段来实现,

ct = ContentType.objects.get(app_label='auth', model='user')
perm = Permission.objects.create(codename='can_view', name='Can View Users', 
                 content_type=ct)
perm.save()

但是我想要一些可以很好地与syncdb一起玩的东西,例如我的自定义模型下的Meta类.我应该在类Meta中有这些:在UserProfile下,因为这是扩展用户模型的方式.但是是否正确的方式呢?不会把它绑定到UserProfile模型?

你可以这样做:

在Django应用的__init__.py中添加:

from django.db.models.signals import post_syncdb
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth import models as auth_models
from django.contrib.auth.models import Permission

# custom user related permissions
def add_user_permissions(sender, **kwargs):
  ct = ContentType.objects.get(app_label='auth', model='user')
  perm, created = Permission.objects.get_or_create(codename='can_view', name='Can View Users', content_type=ct)
post_syncdb.connect(add_user_permissions, sender=auth_models)

原文地址:http://stackoverflow.com/questions/7724265/how-to-add-custom-permission-to-the-user-model-in-django

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的模块和包概念介绍
Apr 13 Python
基于进程内通讯的python聊天室实现方法
Jun 28 Python
python获取文件扩展名的方法
Jul 06 Python
Python实现批量下载图片的方法
Jul 08 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
Jun 15 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
Dec 11 Python
django中SMTP发送邮件配置详解
Jul 19 Python
深入浅析Python 中的sklearn模型选择
Oct 12 Python
OpenCV python sklearn随机超参数搜索的实现
Jan 17 Python
Keras使用ImageNet上预训练的模型方式
May 23 Python
完美解决ARIMA模型中plot_acf画不出图的问题
Jun 04 Python
Python如何优雅删除字符列表空字符及None元素
Jun 25 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
Oct 14 #Python
Python 实现异步调用函数的示例讲解
Oct 14 #Python
python 异或加密字符串的实例
Oct 14 #Python
python实现换位加密算法的示例
Oct 14 #Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
Oct 14 #Python
Python中实例化class的执行顺序示例详解
Oct 14 #Python
Python读取Excel表格,并同时画折线图和柱状图的方法
Oct 14 #Python
You might like
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
2016/11/16 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
JavaScript DOM学习第一章 W3C DOM简介
2010/02/19 Javascript
基于jquery1.4.2的仿flash超炫焦点图播放效果
2010/04/20 Javascript
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
js onkeypress与onkeydown 事件区别详细说明
2012/12/13 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
jquery判断输入密码两次是否相等
2020/04/22 Javascript
js遮罩效果制作弹出注册界面效果
2017/01/25 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
javascript 中关于array的常用方法详解
2017/05/05 Javascript
Vue.js 中的 $watch使用方法
2017/05/25 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
详解iframe跨域的几种常用方法(小结)
2019/04/29 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
2020/04/22 Javascript
nodejs处理tcp连接的核心流程
2021/02/26 NodeJs
Python自定义scrapy中间模块避免重复采集的方法
2015/04/07 Python
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
selenium+python实现自动登录脚本
2018/04/22 Python
Python BS4库的安装与使用详解
2018/08/08 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
使用OpCode绕过Python沙箱的方法详解
2019/09/03 Python
Python zip函数打包元素实例解析
2019/12/11 Python
使用TensorFlow-Slim进行图像分类的实现
2019/12/31 Python
python模拟实现分发扑克牌
2020/04/22 Python
Java程序员面试90题
2013/10/19 面试题
应用心理学个人求职信范文
2013/12/11 职场文书
银行职员个人的工作自我评价
2014/02/15 职场文书
小学教师评语大全
2014/04/23 职场文书
中队活动总结
2014/08/27 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
导游词之南京中山陵
2019/11/27 职场文书
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS