Django rest框架目前有IsAdminUser
作为权限类还有相应的IsOwnerOrAdminUser
吗?有什么影响吗?如果当前用户是创建它的那个用户,似乎应该只允许对象具有CRUD功能。我正在使用DRF和djangorestframework-jwt
答案 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)
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
from .permissions import IsOwnerOrAdminUser
class UserAPIView(APIView):
permission_classes = (IsOwnerOrAdminUser, )