详解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中类的定义、继承及使用对象实例详解
Apr 30 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 Python
Python 字符串大小写转换的简单实例
Jan 21 Python
Python读写docx文件的方法
May 08 Python
对python 生成拼接xml报文的示例详解
Dec 28 Python
Python 保持登录状态进行接口测试的方法示例
Aug 06 Python
关于Python3 类方法、静态方法新解
Aug 30 Python
树莓派安装OpenCV3完整过程的实现
Oct 10 Python
opencv python在视屏上截图功能的实现
Mar 05 Python
python实点云分割k-means(sklearn)详解
May 28 Python
python numpy中setdiff1d的用法说明
Apr 22 Python
python文件与路径操作神器 pathlib
Apr 01 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数组函数序列之array_combine() - 数组合并函数使用说明
2011/10/29 PHP
ThinkPHP分页类使用详解
2014/03/05 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
2014/11/04 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
一个级联菜单代码学习及removeClass与addClass的应用
2013/01/24 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
Koa代理Http请求的示例代码
2018/10/10 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
vue路由的配置和页面切换详解
2020/09/09 Javascript
跟老齐学Python之网站的结构
2014/10/24 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
2016/11/16 Python
Python3读取Excel数据存入MySQL的方法
2018/05/04 Python
用Python下载一个网页保存为本地的HTML文件实例
2018/05/21 Python
详解Python正则表达式re模块
2019/03/19 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
2020/08/07 Python
浅析python连接数据库的重要事项
2021/02/22 Python
H5离线存储Manifest原理及使用
2020/04/28 HTML / CSS
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
Delphi笔试题
2016/11/14 面试题
大学生家政服务项目创业计划书
2014/01/30 职场文书
社团招新策划书
2014/02/04 职场文书
小学优秀班集体申报材料
2014/05/25 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript
利用uni-app生成微信小程序的踩坑记录
2022/04/05 Javascript