From 6c6d926cb37300382cb59fb355149d96f80004fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Mali=C5=84ski?= Date: Fri, 8 Apr 2016 16:18:38 +0200 Subject: [PATCH] Extract exception handler usage to separate method. This allow using custom exception handler on view class level, and thus having differently configured APIs in one project. Solves multi-configuration problem for django-rest-framework-json-api that has a custom exception handler that must return jsonapi compatible error response. --- rest_framework/views.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/rest_framework/views.py b/rest_framework/views.py index 41d108e53..823d0083e 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -425,10 +425,8 @@ class APIView(View): else: exc.status_code = status.HTTP_403_FORBIDDEN - exception_handler = self.settings.EXCEPTION_HANDLER - context = self.get_exception_handler_context() - response = exception_handler(exc, context) + response = self._get_error_response(exc, context) if response is None: raise @@ -436,6 +434,9 @@ class APIView(View): response.exception = True return response + def _get_error_response(self, exc, context): + return self.settings.EXCEPTION_HANDLER(exc, context) + # Note: Views are made CSRF exempt from within `as_view` as to prevent # accidental removal of this exemption in cases where `dispatch` needs to # be overridden.