I am writing an API using Django REST Framework and I am wondering if can specify permissions per method when using class based views.
Reading the documentation I se
If you use ViewSets or ModelViewSets, I think overwriting get_permissions will do the trick.
Take a look at how djoser handles this.
Example:
class UserViewSet(viewsets.ModelViewSet):
permission_classes = settings.PERMISSIONS.user # default
def get_permissions(self):
if self.action == "activation": # per action
self.permission_classes = settings.PERMISSIONS.activation
return super().get_permissions()
@action(["post"], detail=False) # action
def activation(self, request, *args, **kwargs):
pass