抱歉我的英文。现在我学习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
答案 0 :(得分:2)
您的逻辑可能需要用户has_perms()
,并且不要忘记用户is_superuser是否拥有所有权限。