How to access named url arguments in permissions with Django REST Framework?

Viewed 4357

I have an url config like

url(r'^user/(?P<id>[0-9]+)/$', UserView.as_view())

And a view class like

class UserView(GenericAPIView):
    serializer_class = UserSerializer
    permission_classes = [MyCustomPermission]

    def get(self, request, id):
        # code...

The permission is like

class MyCustomPermission(BasePermission):
    def has_permission(self, request, view, *args, **kwargs):
    # code

How do I access id in MyCustomPermission? I can't find it from the request or from *args or *kwargs. Documentation doesn't say anything about this. I've tried to look the source code but can't find how to access those named url arguments. Is it even possible?

3 Answers

you can access from the view.kwargs.

You can find them in:

request.resolver_match.kwargs.get('attribute_name')
Related