DRF的默认权限类

时间:2017-07-06 05:35:33

标签: django django-rest-framework

Django rest框架目前有IsAdminUser作为权限类还有相应的IsOwnerOrAdminUser吗?有什么影响吗?如果当前用户是创建它的那个用户,似乎应该只允许对象具有CRUD功能。我正在使用DRF和djangorestframework-jwt

2 个答案:

答案 0 :(得分:3)

您可以在docs中找到完整的休息框架权限列表。 DjangoModelPermissionsOrAnonReadOnly只允许对模型具有添加,更改和删除权限的用户使用不安全的方法。 如果它不符合您的要求,您可以实现自己的权限类:

class IsOwnerOrReadOnly(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        if request.method in permissions.SAFE_METHODS:
            return True
        return obj.owner == request.user or request.user.is_superuser

此方法记录在案here

答案 1 :(得分:3)

permissions.py

from rest_framework import permissions

class IsOwnerOrAdminUser(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
       if request.method in permissions.SAFE_METHODS:
          return True
       return obj.owner == request.user or request.user.is_staff 

views.py

from .permissions import IsOwnerOrAdminUser

class UserAPIView(APIView):
    permission_classes = (IsOwnerOrAdminUser, )