Loading django/core/handlers/exception.py +4 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,10 @@ def response_for_exception(request, exc): signals.got_request_exception.send(sender=None, request=request) response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info()) # Force a TemplateResponse to be rendered. if not getattr(response, 'is_rendered', True) and callable(getattr(response, 'render', None)): response = response.render() return response Loading tests/handlers/tests_custom_error_handlers.py +14 −1 Original line number Diff line number Diff line from django.conf.urls import url from django.core.exceptions import PermissionDenied from django.template.response import TemplateResponse from django.test import SimpleTestCase, override_settings from django.test import SimpleTestCase, modify_settings, override_settings class MiddlewareAccessingContent(object): def __init__(self, get_response): self.get_response = get_response def __call__(self, request): response = self.get_response(request) # Response.content should be available in the middleware even with a # TemplateResponse-based exception response. assert response.content return response def template_response_error_handler(request, exception=None): Loading @@ -20,6 +32,7 @@ handler403 = template_response_error_handler @override_settings(ROOT_URLCONF='handlers.tests_custom_error_handlers') @modify_settings(MIDDLEWARE={'append': 'handlers.tests_custom_error_handlers.MiddlewareAccessingContent'}) class CustomErrorHandlerTests(SimpleTestCase): def test_handler_renders_template_response(self): Loading Loading
django/core/handlers/exception.py +4 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,10 @@ def response_for_exception(request, exc): signals.got_request_exception.send(sender=None, request=request) response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info()) # Force a TemplateResponse to be rendered. if not getattr(response, 'is_rendered', True) and callable(getattr(response, 'render', None)): response = response.render() return response Loading
tests/handlers/tests_custom_error_handlers.py +14 −1 Original line number Diff line number Diff line from django.conf.urls import url from django.core.exceptions import PermissionDenied from django.template.response import TemplateResponse from django.test import SimpleTestCase, override_settings from django.test import SimpleTestCase, modify_settings, override_settings class MiddlewareAccessingContent(object): def __init__(self, get_response): self.get_response = get_response def __call__(self, request): response = self.get_response(request) # Response.content should be available in the middleware even with a # TemplateResponse-based exception response. assert response.content return response def template_response_error_handler(request, exception=None): Loading @@ -20,6 +32,7 @@ handler403 = template_response_error_handler @override_settings(ROOT_URLCONF='handlers.tests_custom_error_handlers') @modify_settings(MIDDLEWARE={'append': 'handlers.tests_custom_error_handlers.MiddlewareAccessingContent'}) class CustomErrorHandlerTests(SimpleTestCase): def test_handler_renders_template_response(self): Loading