Skip to content

Commit b5a2f64

Browse files
committed
[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
1 parent 1fedc0b commit b5a2f64

File tree

4 files changed

+12
-3
lines changed

4 files changed

+12
-3
lines changed

django/views/debug.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ def technical_404_response(request, exception):
245245
"Create a technical 404 error response. The exception should be the Http404."
246246
try:
247247
tried = exception.args[0]['tried']
248-
except (IndexError, TypeError):
248+
except (IndexError, TypeError, KeyError):
249249
tried = []
250250
else:
251251
if not tried:

tests/regressiontests/views/tests/debug.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,7 @@ def test_files(self):
1919
response = self.client.post('/views/raises/', data)
2020
self.failUnless('file_data.txt' in response.content)
2121
self.failIf('haha' in response.content)
22+
23+
def test_404(self):
24+
response = self.client.get('/views/raises404/')
25+
self.assertEquals(response.status_code, 404)

tests/regressiontests/views/urls.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,8 @@
9595

9696
# a view that raises an exception for the debug view
9797
urlpatterns += patterns('',
98-
(r'^raises/$', views.raises)
98+
(r'^raises/$', views.raises),
99+
(r'^raises404/$', views.raises404),
99100
)
100101

101102
# rediriects, both temporary and permanent, with non-ASCII targets

tests/regressiontests/views/views.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from django import forms
55
from django.views.debug import technical_500_response
66
from django.views.generic.create_update import create_object
7+
from django.core.urlresolvers import get_resolver
78

89
from models import Article
910

@@ -12,7 +13,6 @@ def index_page(request):
1213
"""Dummy index page"""
1314
return HttpResponse('<html><body>Dummy page</body></html>')
1415

15-
1616
def custom_create(request):
1717
"""
1818
Calls create_object generic view with a custom form class.
@@ -37,6 +37,10 @@ def raises(request):
3737
except Exception:
3838
return technical_500_response(request, *sys.exc_info())
3939

40+
def raises404(request):
41+
resolver = get_resolver(None)
42+
resolver.resolve('')
43+
4044
def redirect(request):
4145
"""
4246
Forces an HTTP redirect.

0 commit comments

Comments
 (0)