详解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 startswith()函数与endswith函数
Sep 08 Python
利用python将xml文件解析成html文件的实现方法
Dec 22 Python
Python中.join()和os.path.join()两个函数的用法详解
Jun 11 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
Jun 21 Python
Python占用的内存优化教程
Jul 28 Python
Python中print函数简单使用总结
Aug 05 Python
linux下python中文乱码解决方案详解
Aug 28 Python
Django自定义全局403、404、500错误页面的示例代码
Mar 08 Python
Python基于smtplib协议实现发送邮件
Jun 03 Python
python安装后的目录在哪里
Jun 21 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
Mar 04 Python
Python 正则模块详情
Nov 02 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在字符串中查找另一个字符串
2008/11/19 PHP
php 正则表达式小结
2009/08/31 PHP
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
深入分析PHP引用(&)
2014/09/04 PHP
在php和MySql中计算时间差的方法详解
2015/03/27 PHP
php简单socket服务器客户端代码实例
2015/05/18 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
PHP定时任务获取微信access_token的方法
2016/10/10 PHP
详解php中的implements 使用
2017/06/13 PHP
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
基于jquery实现二级联动效果
2017/03/30 jQuery
pm2 部署 node的三种方法示例
2017/10/20 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
Python爬虫设置代理IP(图文)
2018/12/23 Python
HTML5时代CSS设置漂亮字体取代图片
2014/09/04 HTML / CSS
Linux如何压缩可执行文件
2014/03/27 面试题
垃圾回收的优点和原理
2014/05/16 面试题
外语学院毕业生的自我鉴定
2013/11/28 职场文书
电子商务网站的创业计划书
2014/01/05 职场文书
初婚初育证明
2014/01/14 职场文书
党委书记个人对照检查材料
2014/09/15 职场文书
群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书
新课程改革心得体会
2016/01/22 职场文书
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js