diff options
| -rw-r--r-- | rest_framework/views.py | 5 | ||||
| -rw-r--r-- | tests/test_views.py | 7 |
2 files changed, 9 insertions, 3 deletions
diff --git a/rest_framework/views.py b/rest_framework/views.py index bc870417..07e71393 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -46,7 +46,7 @@ def get_view_description(view_cls, html=False): return description -def exception_handler(exc): +def exception_handler(exc, context=None): """ Returns the response that should be used for any given exception. @@ -369,7 +369,8 @@ class APIView(View): else: exc.status_code = status.HTTP_403_FORBIDDEN - response = self.settings.EXCEPTION_HANDLER(exc) + context = self.get_renderer_context() + response = self.settings.EXCEPTION_HANDLER(exc, context) if response is None: raise diff --git a/tests/test_views.py b/tests/test_views.py index 77b113ee..e9b75f06 100644 --- a/tests/test_views.py +++ b/tests/test_views.py @@ -121,7 +121,12 @@ class TestCustomExceptionHandler(TestCase): def setUp(self): self.DEFAULT_HANDLER = api_settings.EXCEPTION_HANDLER - def exception_handler(exc): + def exception_handler(exc, context=None): + self.assertTrue('args' in context) + self.assertTrue('kwargs' in context) + self.assertTrue('request' in context) + self.assertTrue('view' in context) + return Response('Error!', status=status.HTTP_400_BAD_REQUEST) api_settings.EXCEPTION_HANDLER = exception_handler |
