美文网首页
django-guardian

django-guardian

作者: bhyi | 来源:发表于2019-10-21 19:05 被阅读0次
  • 可实现对象级的权限控制
  • 只判断权限并不控制创建

使用

  1. 安装:pip install django-guardian
  2. settings.py/installedapp变量列表中添加guardian
  3. settings.py中添加
    'django.contrib.auth.backends.ModelBackend', # this is default
    'guardian.backends.ObjectPermissionBackend',
)
  1. 定义user,可不定义,但一定要注意--- 继承 django.contrib.auth.models 中的user
  2. 定义其他model
from django.contrib.auth.models import User

# Create your models here.


class Row(models.Model):
    """"""
    num = models.IntegerField(default=0, null=True)
    content = models.CharField(default='123456789', max_length=100, null=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    class Meta:
        default_permissions = ('add', 'change', 'delete')

    def __str__(self):
        return str(self.num)

此处生成数据库后,会有对应的表。

  1. 分配权限
from guardian.shortcuts import assign_perm
assign_perm('add_row', group/user, row1)  # 对象级控制
assign_perm('testmodel.add_row', group/user)  # 模型级控制
  1. 检验
user.has_perm('add_row', row1)
user.has_perm('testmodel.add_row', row1)  # 对应以上第一中校验,用上面的则不行

组的使用

from django.contrib.auth.models import Group
Group.objects.get_or_create(name='user')
user_group = Group.objects.get(name='user')
assign_perm('testmodel.add_row', user_group)
user = User.objects.get(username='1')
user.groups.add(user_group)

相关文章

  • django-guardian

    可实现对象级的权限控制 只判断权限并不控制创建 使用 安装:pip install django-guardian...

  • 6.drf中各类View

    Rest中的View (1)使用Drf中的Serializer 其他的包 其中django-guardian是用来...

网友评论

      本文标题:django-guardian

      本文链接:https://www.haomeiwen.com/subject/gshxvctx.html