summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorana-balica <ana.balica@gmail.com>2015-06-15 15:55:55 +0300
committerTim Graham <timograham@gmail.com>2015-06-17 17:11:50 -0400
commit2f615b10e6330d27dccbd770a4628200044acf70 (patch)
tree273a7b06ac1ffd6b9bb7ca65dfb7d9bd6f80efb6 /django
parent64a4211aa85795cb21a73bc93f9e43bafa1541f6 (diff)
Fixed #24829 -- Allowed use of TemplateResponse in view error handlers.
Diffstat (limited to 'django')
-rw-r--r--django/core/handlers/base.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/django/core/handlers/base.py b/django/core/handlers/base.py
index cad2ba2a60..04c8f79180 100644
--- a/django/core/handlers/base.py
+++ b/django/core/handlers/base.py
@@ -113,6 +113,9 @@ class BaseHandler(object):
urlconf = settings.ROOT_URLCONF
urlresolvers.set_urlconf(urlconf)
resolver = urlresolvers.RegexURLResolver(r'^/', urlconf)
+ # Use a flag to check if the response was rendered to prevent
+ # multiple renderings or to force rendering if necessary.
+ response_is_rendered = False
try:
response = None
# Apply request middleware
@@ -174,6 +177,7 @@ class BaseHandler(object):
"HttpResponse object. It returned None instead."
% (middleware_method.__self__.__class__.__name__))
response = response.render()
+ response_is_rendered = True
except http.Http404 as exc:
logger.warning('Not Found: %s', request.path,
@@ -246,6 +250,11 @@ class BaseHandler(object):
response._closable_objects.append(request)
+ # If the exception handler returns a TemplateResponse that has not
+ # been rendered, force it to be rendered.
+ if not response_is_rendered and callable(getattr(response, 'render', None)):
+ response = response.render()
+
return response
def handle_uncaught_exception(self, request, resolver, exc_info):