自定义权限返回始终为true,django

时间:2017-08-18 13:17:05

标签: python django

抱歉我的英文。现在我学习django休息,我尝试为用户创建自定义permisssion。 Fox示例权限:“大”和“小”。

我的用户模型

class User(AbstractUser):
    is_active = models.BooleanField(default=False)
    email = models.EmailField(blank=False, unique=True)
    avatar = models.ImageField(upload_to='avatar/users', blank=True)

    class Meta:
        permissions = (
            ("big", "this is big boy"),
            ("small", "this is small"),
        )

然后我添加了这样的用户权限:

permission = Permission.objects.get(name='big')
        user.user_permissions.add(permission)
        user.save()

创建自定义类,它类检查权限:

class IsBigBoy(permissions.BasePermission):

    def has_permission(self, request, view):
        return request.user.has_perm('users.big')

并在视图中创建测试类以检查我的自定义权限

class MySuperTestRequest(generics.CreateAPIView):
    permission_classes = (permissions.IsAuthenticated, custom_permissions.IsBigBoy)
    serializer_class = CreateSomethingSerializer

    def post(self, 
        return Response({"detail": "good"}, status.HTTP_200_OK)

问题:

return request.user.has_perm('users.big')

代码始终返回true

1 个答案:

答案 0 :(得分:2)

您的逻辑可能需要用户has_perms(),并且不要忘记用户is_superuser是否拥有所有权限。