详解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 列表排序方法reverse、sort、sorted详解
Jan 22 Python
python 打印对象的所有属性值的方法
Sep 11 Python
基于Django的python验证码(实例讲解)
Oct 23 Python
python matplotlib 在指定的两个点之间连线方法
May 25 Python
PyQt5 实现字体大小自适应分辨率的方法
Jun 18 Python
Django 实现admin后台显示图片缩略图的例子
Jul 28 Python
python rsync服务器之间文件夹同步脚本
Aug 29 Python
Python的Lambda函数用法详解
Sep 03 Python
Python单元测试与测试用例简析
Nov 09 Python
在Tensorflow中实现leakyRelu操作详解(高效)
Jun 30 Python
python多线程semaphore实现线程数控制的示例
Aug 10 Python
如何用 Python 处理不平衡数据集
Jan 04 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中session退出登陆问题
2014/02/27 PHP
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
PHP三种方式实现链式操作详解
2017/01/21 PHP
js判断浏览器类型的方法
2013/08/07 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
JS获取select-option-text_value的方法
2013/12/26 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
Vue 2.0的数据依赖实现原理代码简析
2017/07/10 Javascript
vue结合Echarts实现点击高亮效果的示例
2018/03/17 Javascript
node中使用es6/7/8(支持性与性能)
2019/03/28 Javascript
对Layer UI 模块化的用法详解
2019/09/26 Javascript
ant-design-vue中tree增删改的操作方法
2020/11/03 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
[46:47]2014 DOTA2国际邀请赛中国区预选赛 DT VS HGT
2014/05/22 DOTA
Python读写Excel文件方法介绍
2014/11/22 Python
python实现图片变亮或者变暗的方法
2015/06/01 Python
python 队列详解及实例代码
2016/10/18 Python
对Python中内置异常层次结构详解
2018/10/18 Python
python 判断参数为Nonetype类型或空的实例
2018/10/30 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
python超时重新请求解决方案
2019/10/21 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
2020/04/15 Python
CSS3下的渐变文字效果实现示例
2018/03/02 HTML / CSS
幼儿园运动会入场词
2014/02/10 职场文书
市场调查策划方案
2014/06/10 职场文书
文明城市创建标语
2014/06/16 职场文书
踏青活动策划方案
2014/08/19 职场文书
美德少年事迹材料500字
2014/08/19 职场文书
务工证明怎么写
2015/06/18 职场文书
六年级情感作文之500字
2019/10/23 职场文书
mysql的MVCC多版本并发控制的实现
2021/04/14 MySQL
如何利用js在两个html窗口间通信
2021/04/27 Javascript
Python使用Kubernetes API访问集群
2021/05/30 Python