详解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 相关文章推荐
Python3基础之条件与循环控制实例解析
Aug 13 Python
python3使用pyqt5制作一个超简单浏览器的实例
Oct 19 Python
python 执行shell命令并将结果保存的实例
May 11 Python
Python 带有参数的装饰器实例代码详解
Dec 06 Python
在python里面运用多继承方法详解
Jul 01 Python
Python从文件中读取指定的行以及在文件指定位置写入
Sep 06 Python
Django 删除upload_to文件的步骤
Mar 30 Python
python爬虫实现POST request payload形式的请求
Apr 30 Python
DataFrame 数据合并实现(merge,join,concat)
Jun 14 Python
Python是怎样处理json模块的
Jul 16 Python
Python list和str互转的实现示例
Nov 16 Python
浅谈Python 中的复数问题
May 19 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 程式大小
2006/12/06 PHP
sae使用smarty模板的方法
2013/12/17 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
javascript function、指针及内置对象
2009/02/19 Javascript
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
jQuery中animate用法实例分析
2015/03/09 Javascript
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
js实现扫雷小程序的示例代码
2017/09/27 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
深入浅出vue图片路径的实现
2019/09/04 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
python模块hashlib(加密服务)知识点讲解
2019/11/25 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
巴西女装购物网站:Eclectic
2018/04/24 全球购物
全球独特生活方式产品和礼品购物网站:AHAlife
2018/09/18 全球购物
大学班长的职责
2014/01/27 职场文书
活动总结新闻稿
2014/08/30 职场文书
2015年银行员工工作总结
2015/04/24 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript