12-权限-分组

  1. 分组:
    1. 分组操作:

分组:

权限有很多,一个模型就有最少三个权限,如果一些用户拥有相同的权限,那么每次都要重复添加。这时候分组就可以帮我们解决这种问题了,我们可以把一些权限归类,然后添加到某个分组中,之后再把和把需要赋予这些权限的用户添加到这个分组中,就比较好管理了。分组我们使用的是django.contrib.auth.models.Group模型, 每个用户组拥有idname两个字段,该模型在数据库被映射为auth_group数据表。

分组操作:

  1. Group.object.create(group_name):创建分组。
  2. group.permissions:某个分组上的权限。多对多的关系。
    • group.permissions.add:添加权限。
    • group.permissions.remove:移除权限。
    • group.permissions.clear:清除所有权限。
    • user.get_group_permissions():获取用户所属组的权限。
  3. user.groups:某个用户上的所有分组。多对多的关系。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from django.contrib.auth.models import Group
def operate_group(request):
#创建一个分组
#组和权限是多对多关系 多个组可以拥有多个权限
# group = Group.objects.create(name='运营')
# content_type = ContentType.objects.get_for_model(Article)
# permissions = Permission.objects.filter(content_type=content_type)
#
# group.permissions.set(permissions)
# group.save()

#一个组拥有了权限 一个 用户拥有了组 不就等同于一个用户拥有了权限吗??
#给指定用户添加分组,用户和分组是多对多关系一个用户可以拥有多个组
# 定义user的时候并没有定义group那么 group是哪里来的??
# group = Group.objects.get(name='运营')
user = User.objects.get(telephone='123123')
# user.groups.add(group)
# user.save()

# 获取用户所属组的权限。
print(user.get_group_permissions())

#user.has_perm:
# user.has_perms 可以判断多个权限

# def has_perms(self, perm_list, obj=None):
# """
# Return True if the user has each of the specified permissions. If
# object is passed, check if the user has all required perms for it.
# """
# return all(self.has_perm(perm, obj) for perm in perm_list)

#1.首先判断user.permissions 下有没有这个权限,如果有:就True
#2.如果过user.permission下没有这个权限,就会判断所属分组下有没有这个权限如果有则还是True
return HttpResponse('操作分组!')
'''
判断权限的装饰器也可以判断是否拥有多个权限那就是把权限放在一个列表中
'''

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com
目录
主站