详解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 socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 Python
使用Python编写一个在Linux下实现截图分享的脚本的教程
Apr 24 Python
举例详解Python中threading模块的几个常用方法
Jun 18 Python
python3中str(字符串)的使用教程
Mar 23 Python
机器学习python实战之手写数字识别
Nov 01 Python
BP神经网络原理及Python实现代码
Dec 18 Python
python 搜索大文件的实例代码
Jul 08 Python
使用 Python 读取电子表格中的数据实例详解
Apr 17 Python
如何在Anaconda中打开python自带idle
Sep 21 Python
python中turtle库的简单使用教程
Nov 11 Python
OpenCV图像变换之傅里叶变换的一些应用
Jul 26 Python
关于python pygame游戏进行声音添加的技巧
Oct 24 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
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
让Firefox支持event对象实现代码
2009/11/07 Javascript
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
JSONP跨域请求实例详解
2016/07/04 Javascript
JS之相等操作符详解
2016/09/13 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
2017/11/07 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
Python中的zip函数使用示例
2015/01/29 Python
Python 列表排序方法reverse、sort、sorted详解
2016/01/22 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
python实现word 2007文档转换为pdf文件
2018/03/15 Python
Python闭包函数定义与用法分析
2018/07/20 Python
Tensorflow 合并通道及加载子模型的方法
2018/07/26 Python
Python基于SMTP协议实现发送邮件功能详解
2018/08/14 Python
Pytorch中index_select() 函数的实现理解
2019/11/19 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
通过HTML5规范搞定i、em、b、strong元素的区别
2017/03/04 HTML / CSS
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
捷克钓鱼用品网上商店:Parys.cz
2018/06/15 全球购物
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
全球性的众包图形设计市场:DesignCrowd
2021/02/02 全球购物
三年级学生评语
2014/04/23 职场文书
组工干部演讲稿
2014/09/02 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js