向 Django Rest Framework 基于函数的视图添加自定义权限

Adding custom permission to Django Rest Framework Function-Based view

我正在尝试为参数为 user_id 的基于 DRF 函数的视图编写自定义 IsOwner 权限。视图如下:

@api_view(['GET'])
@permission_classes([permissions.IsAuthenticatedOrReadOnly])
def return_credibility(request, user_id):
    credibility = utils.get_credibility(user_id)
    return Response({'id': user_id, 'credibility': credibility})

除非我想用我的自定义 IsOwner 权限替换 permissions.IsAuthenticatedOrReadOnly。 我试着写这样的东西:

class IsOwner(permissions.BasePermission):
    def has_permission(self, request, view):
        return request.user.id == view.user_id

除非我不确定如何从视图访问 user_id 属性。有谁知道我该怎么做?

您可以从 view.kwargs 获得 user_id

class IsOwner(permissions.BasePermission):
    def has_permission(self, request, view):
        return request.user.id == view.kwargs['user_id']