Search code examples
pythondjangodjango-rest-frameworkpermissions

Adding custom permission to Django Rest Framework Function-Based view


I am trying to write a custom IsOwner permission for a DRF function based view that has a parameter of user_id. The view is as follows:

@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})

Except I would want to replace permissions.IsAuthenticatedOrReadOnly with my custom IsOwner permission. I tried writing something like this:

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

Except I am not sure how to access the user_id property from the view. Does anyone know how I can do this?


Solution

  • You can get user_id from view.kwargs.

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