In my Django RestApi project I want to apply Exceptions errors. I create a separate file (common.py) for all my exceptions file is located out side the project where our manage.py file located. this is in my file:
HTTP_STRING = {
'get': 'get',
'post': 'post',
'put': 'put',
'patch': 'patch',
'delete': 'delete',
}
Also I set it in settings.py:
REST_FRAMEWORK = {
'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler',
Now In my view I create a modelviewset. In modelviewset we get all built in functions to perform oprations like (put, patch, delete, create, update) but in this view I don't need put, patch, and delete. So I want to block this and want to give exception on it I tried this :
from rest_framework import viewsets
from common_strings import HTTP_STRING
class DemoModelViewSet(viewsets.ModelViewSet):
queryset = DemoModel.objects.all()
serializer_class = DemoModelSerializer
def update(self, request, pk=None):
raise MethodNotAllowed(method=HTTP_STRING['put'])
def partial_update(self, request, pk=None):
raise MethodNotAllowed(method=HTTP_STRING['patch'])
def destroy(self, request, pk=None):
raise MethodNotAllowed(method=HTTP_STRING['delete'])
But giving error on MethodNotAllowed is not defined. Why this is happenning?
I was having a similar issue.
According to the exceptions page on Django REST framework website, I think you have to import the exceptions module.
Importing the exceptions module would look something like:
and then raising the exceptions would look like,