167.权限-添加权限的两种方式

Django中内置了权限功能,他的权限都是针对表与模型级别的,比如对某个模型上的数据是否可以进行增删改查操作,它不能针对数据级别,比如针对某个表的某条数据进行增删改查操作如果要实现数据级别的,考虑使用django.guardian.

1.通过定义模型的方式添加权限

(1)权限都是django.contrib.auth.Permission的实例。这个模型包含三个字段:name、codename、content_type,其中的content_type表示这个permission是属于哪个app下的哪个models。
(2)使用Django创建模型,在映射到数据库中之后,就会默认的为项目创建auth_permission表,表中的字段:name(权限的描述信息);content_type_id(django_content_type表中的key,即代表的是app对应的模型);codename(权限的名字)。在我们创建模型的时候,Django默认会为我们添加增(add)、删(delete)、改(change)、查(view)权限,如果想要对某个表或者是模型添加权限。那么,我们可以在定义模型的时候,在Meta类中指定permission。示例代码如下:
class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.CharField(max_length=100)
    author = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)

    class Meta:
        permissions = {
            ('black_article', '拉黑文章')
            }
在views.py文件中为user添加该权限。分析:如果想要为用户添加拉黑文章的权限,那么就需要使用ContentType和Permission模型创建实例对象,首先需要导入Django内置的这两个模型。
示例代码如下:
from django.contrib.auth.models import Permission, ContentType

def permission_view(request):
    # 1. 通过ContentType模型获取要添加的某个app下的某个模型
    content_type = ContentType.objects.get_for_model(Article)
    # 2. 创建权限示例
    permission = Permission.objects.create(content_type=content_type)
    if permission:
        print('添加权限成功!')
    else:
        print('您不能添加该权限!')
    return HttpResponse('添加权限!')
之后,就可以在auth_permission中查看到我们添加的拉黑文章的权限了。

2. 通过代码的形式

def permission_view(request):
    # 2. 通过代码的形式添加权限
    content_type = ContentType.objects.get_for_model(Article)
    Permission.objects.create(codename='black_article', name='拉黑文章', content_type=content_type)
    return HttpResponse('添加权限!')

原文地址:https://www.cnblogs.com/guyan-2020/p/12354534.html

时间: 2024-09-30 06:40:25

167.权限-添加权限的两种方式的相关文章

添加图片的两种方式

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>js练习 js是脚本语言直接运行在浏览器上的.</title> <script type="text/javascript"> function addcontent(){ document.getElementById(&q

Android---10---TextView添加链接的两种方式

在TextView中显示带Html文本 显示丰富的内容:URL.字体大小.颜色等 在TextView中预定了一些类似于HTML的标签,通过标签可以使TextView控件显示不同颜色.大小.字体的文字 <font> 设置颜色和字体 <big> 设置大号 <small> 设置小号 <i>.<b> 斜体.粗体 <a> 链接地址 <img> 图片 使用这些标签可以用Html.fromHtml方法将这些标签的字符串转换成Charse

js中构造函数的原型添加成员的两种方式

首先,js中给原型对象添加属性和方法. 方式一:对象的动态特效 给原型对象添加成员 语法:构造函数.prototype.方法名=function (){ } 方式二:替换原型对象(不是覆盖,而是替换,把原先的同名的直接替换成现在的) 语法:构造函数.prototype.方法名={ } tips:方式二不常用,因为这样会修改了原型本身 搜索:JS中通过构造函数添加成员方法和通过原型法添加成员方法的区别 参考网址  http://blog.csdn.net/xxmzumeng/article/det

iOS给UIimage添加圆角的两种方式

众所周知,给图片添加圆角有CALayer的cornerRadius, 比如: 最直接的方法: imgView.layer.cornerRadius1=110; imgView.clipsToBounds = YES; 这事离屏渲染 (off - screen - rendering), 是很消耗性能的:有很多公司面试的时候会问到,你怎么将图片设置圆角,如果你 只回答了这个方法,那么很遗憾,没有加分. 下面我介绍一种更好的方法: #import "Bys.h" @implementati

jmeter接口测试时,添加cookie的两种方式

1.http cookie管理,这种方式添加特点就是名称和值要对应着一一输入. 2.http信息头管理器,这种方式可以添加一长串的cookie键值对. 当接口测试,多个接口之间有关联性,比如第二个接口测试要获取第一个接口的cookie,使用http cookie管理方式时,可以看到具体的cookie值. 原文地址:https://www.cnblogs.com/zhuzhu666/p/10582047.html

Linux下chkconfig命令详解即添加服务以及两种方式启动关闭系统服务

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 一.chkconfig 的使用语法 1.chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <levels等级代号>][系统服务][on/off/reset] 2.参数用法: --add 增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文

002-UIImageView和UIButton对比 UIImageView的帧动画 格式符补充 加载图片两种方式 添加删除SUBVIEW

一>.UIImageView和UIButton对比 显示图片 1> UIImageView只是一种图片(图片默认会填充整个UIImageView)  image\setImage: 2> UIButton能显示2种图片 * 背景 (背景会填充整个UIButton)  setBackgroundImage:forState: * 前置(覆盖在背景上面的图片,按照之前的尺寸显示)  setImage:forState: * 还能显示文字 点击事件 1> UIImageView默认是不能

android菜单创建的两种方式和菜单项添加图标

    菜单创建的两种方式:     1.在xml文件中创建菜单: 具体代码: <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context="com.xunfang.menucreate.MainActivity" > //此处创建子菜单 <

添加节点、删除节点的两种方式

添加节点.删除节点的两种方式:(1)一种是静态添加修改slaves文件,重启hadoop集群优点:改动少缺点:暴力 需要停止服务应用环境:晚上或凌晨做 不耽误使用检查:50070和8088端口检查(50070hdfs系统的web地址,8088yarn的外部端口)(2)一种是动态添加:修改slaves文件,不重启hadoop集群新建主机列表文件优点:非暴力 不需要停止服务缺点:改动多 如果一次上很多 会乱应用环境:随时不耽误使用检查:50070和8088端口检查 原文地址:https://www.

解决 SharePoint 2010 拒绝访问爬网内容源错误的小技巧(禁用环回请求的两种方式)

这里有一条解决在SharePoint 2010搜索爬网时遇到的“拒绝访问错误”的小技巧. 首先要检查默认内容访问帐户是否具有相应的访问权限,或者添加一条相应的爬网规则.如果目标资源库是一个SharePoint库,验证一下该帐号是否具有对该SharePoint web应用程序具有至少“完全读取”的权限. 当我在升级上来的SharePoint环境中对我新建的博客URL进行爬网时遇到了这个错误. 这个错误发生在当你运行Windows 2008 R2和SharePoint 2010并且爬网进程试图访问一