mirror of
https://github.com/django/django.git
synced 2025-03-09 17:02:43 +00:00
Fixed #4457 -- Corrected the handling of exceptions in the test client when the 500.html template is not available. Thanks to Chris Wager <cw264701@ohiou.edu> for his help in tracking down this problem.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@6023 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
44e620972d
commit
258af283fc
@ -11,6 +11,7 @@ from django.core.handlers.wsgi import WSGIRequest
|
|||||||
from django.core.signals import got_request_exception
|
from django.core.signals import got_request_exception
|
||||||
from django.dispatch import dispatcher
|
from django.dispatch import dispatcher
|
||||||
from django.http import SimpleCookie, HttpRequest
|
from django.http import SimpleCookie, HttpRequest
|
||||||
|
from django.template import TemplateDoesNotExist
|
||||||
from django.test import signals
|
from django.test import signals
|
||||||
from django.utils.functional import curry
|
from django.utils.functional import curry
|
||||||
from django.utils.encoding import smart_str
|
from django.utils.encoding import smart_str
|
||||||
@ -165,7 +166,21 @@ class Client:
|
|||||||
# Capture exceptions created by the handler
|
# Capture exceptions created by the handler
|
||||||
dispatcher.connect(self.store_exc_info, signal=got_request_exception)
|
dispatcher.connect(self.store_exc_info, signal=got_request_exception)
|
||||||
|
|
||||||
response = self.handler(environ)
|
try:
|
||||||
|
response = self.handler(environ)
|
||||||
|
except TemplateDoesNotExist, e:
|
||||||
|
# If the view raises an exception, Django will attempt to show
|
||||||
|
# the 500.html template. If that template is not available,
|
||||||
|
# we should ignore the error in favor of re-raising the
|
||||||
|
# underlying exception that caused the 500 error. Any other
|
||||||
|
# template found to be missing during view error handling
|
||||||
|
# should be reported as-is.
|
||||||
|
if e.args != ('500.html',):
|
||||||
|
raise
|
||||||
|
|
||||||
|
# Look for a signalled exception and reraise it
|
||||||
|
if self.exc_info:
|
||||||
|
raise self.exc_info[1], None, self.exc_info[2]
|
||||||
|
|
||||||
# Add any rendered template detail to the response
|
# Add any rendered template detail to the response
|
||||||
# If there was only one template rendered (the most likely case),
|
# If there was only one template rendered (the most likely case),
|
||||||
@ -179,10 +194,6 @@ class Client:
|
|||||||
else:
|
else:
|
||||||
setattr(response, detail, None)
|
setattr(response, detail, None)
|
||||||
|
|
||||||
# Look for a signalled exception and reraise it
|
|
||||||
if self.exc_info:
|
|
||||||
raise self.exc_info[1], None, self.exc_info[2]
|
|
||||||
|
|
||||||
# Update persistent cookie data
|
# Update persistent cookie data
|
||||||
if response.cookies:
|
if response.cookies:
|
||||||
self.cookies.update(response.cookies)
|
self.cookies.update(response.cookies)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user