summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaren Tracey <kmtracey@gmail.com>2010-03-05 18:58:47 +0000
committerKaren Tracey <kmtracey@gmail.com>2010-03-05 18:58:47 +0000
commitb5a2f64cbba38cb0ff814118b0abbee05253db58 (patch)
tree9719e9d3380bf38053c3fbb5d11e02bc5d837661
parent1fedc0b9ebf8694036581cc4a75601c89a50c727 (diff)
[1.1.X] Fixed #12083: Ensured generating debug 404 page won't raise a key error. Thanks pigletto.
r12679 from trunk. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.1.X@12680 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/views/debug.py2
-rw-r--r--tests/regressiontests/views/tests/debug.py4
-rw-r--r--tests/regressiontests/views/urls.py3
-rw-r--r--tests/regressiontests/views/views.py6
4 files changed, 12 insertions, 3 deletions
diff --git a/django/views/debug.py b/django/views/debug.py
index 6da89ffcf5..a84e02207d 100644
--- a/django/views/debug.py
+++ b/django/views/debug.py
@@ -245,7 +245,7 @@ def technical_404_response(request, exception):
"Create a technical 404 error response. The exception should be the Http404."
try:
tried = exception.args[0]['tried']
- except (IndexError, TypeError):
+ except (IndexError, TypeError, KeyError):
tried = []
else:
if not tried:
diff --git a/tests/regressiontests/views/tests/debug.py b/tests/regressiontests/views/tests/debug.py
index 0c0b62f51f..5431c19932 100644
--- a/tests/regressiontests/views/tests/debug.py
+++ b/tests/regressiontests/views/tests/debug.py
@@ -19,3 +19,7 @@ class DebugViewTests(TestCase):
response = self.client.post('/views/raises/', data)
self.failUnless('file_data.txt' in response.content)
self.failIf('haha' in response.content)
+
+ def test_404(self):
+ response = self.client.get('/views/raises404/')
+ self.assertEquals(response.status_code, 404)
diff --git a/tests/regressiontests/views/urls.py b/tests/regressiontests/views/urls.py
index a86b0d4ccc..bd95dacd06 100644
--- a/tests/regressiontests/views/urls.py
+++ b/tests/regressiontests/views/urls.py
@@ -95,7 +95,8 @@ urlpatterns += patterns('django.views.generic.create_update',
# a view that raises an exception for the debug view
urlpatterns += patterns('',
- (r'^raises/$', views.raises)
+ (r'^raises/$', views.raises),
+ (r'^raises404/$', views.raises404),
)
# rediriects, both temporary and permanent, with non-ASCII targets
diff --git a/tests/regressiontests/views/views.py b/tests/regressiontests/views/views.py
index 3447cbfdfd..5e6acfd46d 100644
--- a/tests/regressiontests/views/views.py
+++ b/tests/regressiontests/views/views.py
@@ -4,6 +4,7 @@ from django.http import HttpResponse, HttpResponseRedirect
from django import forms
from django.views.debug import technical_500_response
from django.views.generic.create_update import create_object
+from django.core.urlresolvers import get_resolver
from models import Article
@@ -12,7 +13,6 @@ def index_page(request):
"""Dummy index page"""
return HttpResponse('<html><body>Dummy page</body></html>')
-
def custom_create(request):
"""
Calls create_object generic view with a custom form class.
@@ -37,6 +37,10 @@ def raises(request):
except Exception:
return technical_500_response(request, *sys.exc_info())
+def raises404(request):
+ resolver = get_resolver(None)
+ resolver.resolve('')
+
def redirect(request):
"""
Forces an HTTP redirect.