详解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字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
Python获取运行目录与当前脚本目录的方法
Jun 01 Python
实例讲解Python中函数的调用与定义
Mar 14 Python
Python实现将数据库一键导出为Excel表格的实例
Dec 30 Python
使用Python的Django和layim实现即时通讯的方法
May 25 Python
python3爬虫之设计签名小程序
Jun 19 Python
python调用tcpdump抓包过滤的方法
Jul 18 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
Python批量启动多线程代码实例
Feb 18 Python
python打包生成so文件的实现
Oct 30 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
Jan 29 Python
python 实现图片裁剪小工具
Feb 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
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
解析smarty模板中类似for的功能实现
2013/06/18 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
js url传值中文乱码之解决之道
2009/11/20 Javascript
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
js调用webservice中的方法实现思路及代码
2013/02/25 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
javascript计时器详解
2015/02/28 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
jQuery中Nicescroll滚动条插件的用法
2016/11/10 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
Python pass 语句使用示例
2014/03/11 Python
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
Pycharm学习教程(2) 代码风格
2017/05/02 Python
python中numpy的矩阵、多维数组的用法
2018/02/05 Python
Python基础教程之异常详解
2019/01/10 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
python实现实时视频流播放代码实例
2020/01/11 Python
NumPy统计函数的实现方法
2020/01/21 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020/03/30 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
运动会广播稿50字
2014/01/26 职场文书
学校工作推荐信范文
2014/07/11 职场文书
租房安全协议书
2014/08/20 职场文书
学位证书委托书
2014/09/30 职场文书
民政局副局长民主生活会个人整改措施
2014/10/04 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
Nginx+SpringBoot实现负载均衡的示例
2021/03/31 Servers
MySQL获取所有分类的前N条记录
2021/05/07 MySQL
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技