详解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 相关文章推荐
Python2.x和3.x下maketrans与translate函数使用上的不同
Apr 13 Python
利用Python中的mock库对Python代码进行模拟测试
Apr 16 Python
python使用正则表达式提取网页URL的方法
May 26 Python
Python实现批量将word转html并将html内容发布至网站的方法
Jul 14 Python
Python文本处理之按行处理大文件的方法
Apr 09 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
Python中的CSV文件使用"with"语句的方式详解
Oct 16 Python
python 读取竖线分隔符的文本方法
Dec 20 Python
python 执行终端/控制台命令的例子
Jul 12 Python
python实现简单飞行棋
Feb 06 Python
常用的10个Python实用小技巧
Aug 10 Python
Python初识逻辑与if语句及用法大全
Aug 07 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
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
用javascript作一个通用向导说明
2011/08/30 Javascript
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
jQuery搜索子元素的方法
2015/02/10 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
jQuery中trigger()与bind()用法分析
2015/12/18 Javascript
js实现上传图片预览方法
2016/10/25 Javascript
jQuery中 $ 符号的冲突问题及解决方案
2016/11/04 Javascript
node.js实现登录注册页面
2017/04/08 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
基于js文件加载优化(详解)
2018/01/03 Javascript
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
python实现生成字符串大小写字母和数字的各种组合
2019/01/01 Python
利用python开发app实战的方法
2019/07/09 Python
python 实现turtle画图并导出图片格式的文件
2019/12/07 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
2020/06/24 Python
python输入中文的实例方法
2020/09/14 Python
校园网站的创业计划书范文
2013/12/30 职场文书
节能减耗标语
2014/06/21 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
招标授权委托书样本
2014/09/23 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
单位租房协议书范本
2014/12/04 职场文书
2016高考寄语集锦
2015/12/04 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
golang使用map实现去除重复数组
2022/04/14 Golang
Java Spring Lifecycle的使用
2022/05/06 Java/Android