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?
you can access from the view.kwargs.
You can find them in:
request.resolver_match.kwargs.get('attribute_name')
This is the wrong approach. Rather than trying to access keyword arguments there, you should be using object-level permissions and checking has_object_permission
in your permission class.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With