详解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实现
Jan 28 Python
python简单线程和协程学习心得(分享)
Jun 14 Python
python3 实现一行输入,空格隔开的示例
Nov 14 Python
详解python使用turtle库来画一朵花
Mar 21 Python
python查看数据类型的方法
Oct 12 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
Mar 03 Python
Win 10下Anaconda虚拟环境的教程
May 18 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 Python
如何用Python 加密文件
Sep 10 Python
python 如何实现遗传算法
Sep 22 Python
如何使用Pytorch搭建模型
Oct 26 Python
Pycharm 跳转回之前所在页面的操作
Feb 05 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中动态HTML的输出技术
2006/10/09 PHP
php使用session二维数组实例
2014/11/06 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
JQuery扩展插件Validate—4设置错误提示的样式
2011/09/05 Javascript
js创建数据共享接口——简化框架之间相互传值
2011/10/23 Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
2011/10/26 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
2015/08/26 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
angular+bootstrap的双向数据绑定实例
2017/03/03 Javascript
用React实现一个完整的TodoList的示例代码
2017/10/30 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
详解swipe使用及竖屏页面滚动方法
2018/06/28 Javascript
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
微信小程序使用npm包的方法步骤
2019/08/13 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
详解vue高级特性
2020/06/09 Javascript
[37:50]VP vs TNC Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
python3制作捧腹网段子页爬虫
2017/02/12 Python
对python3新增的byte类型详解
2018/12/04 Python
Farnell德国:电子元器件供应商
2018/07/10 全球购物
企业环保标语
2014/06/10 职场文书
维稳工作承诺书
2015/01/20 职场文书
介绍信格式
2015/01/30 职场文书
我的1919观后感
2015/06/03 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
“爱眼护眼,提前预防近视”倡议书3篇
2019/10/30 职场文书
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS