09-权限-添加权限的两种方式
创建时间:
阅读:
权限:
Django
中内置了权限的功能。他的权限都是针对表或者说是模型级别的。比如对某个模型上的数据是否可以进行增删改查操作。他不能针对数据级别的,比如对某个表中的某条数据能否进行增删改查操作(如果要实现数据级别的,考虑使用django-guardian
)。创建完一个模型后,针对这个模型默认就有三种权限,分别是增/删/改/。可以在执行完migrate
命令后,查看数据库中的auth_permission
表中的所有权限。

其中的codename
表示的是权限的名字。name
表示的是这个权限的作用。
通过定义模型添加权限:
如果我们想要增加新的权限,比如查看某个模型的权限,那么我们可以在定义模型的时候在Meta
中定义好。示例代码如下:
1 2 3 4 5 6 7 8 9
| class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() author = models.ForeignKey(get_user_model(),on_delete=models.CASCADE)
class Meta: permissions = ( ('view_article','can view article'), )
|
通过代码添加权限:
权限都是django.contrib.auth.Permission
的实例。这个模型包含三个字段,name
、codename
以及content_type
,其中的content_type
表示这个permission
是属于哪个app
下的哪个models
。用Permission
模型创建权限的代码如下:
1 2 3 4
| from django.contrib.auth.models import Permission,ContentType from .models import Article content_type = ContentType.objects.get_for_model(Article) permission = Permission.objects.create(name='可以编辑的权限',codename='edit_article',content_type=content_type)
|
实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
from django.contrib.contenttypes.models import ContentType
from url_app.models import Article from django.contrib.auth.models import Permission def add_permission(request): content_type = ContentType.objects.get_for_model(Article) ''' codename 权限的名称 name 权限的描述 content_tpye 指定那个表的权限 ''' permission = Permission.objects.create(codename='black_article',name='拉黑文章',content_type=content_type) return HttpResponse('权限创建成功!')
|
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com