Fixed #11990 -- Show the correct URLconf in the technical 404 template even if it was overridden, e.g. in a middleware. Thanks, mattbennett.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@14877 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Jannis Leidel 2010-12-12 22:54:04 +00:00
parent 462d3115a3
commit 6261593b99
1 changed files with 7 additions and 1 deletions

View File

@ -2,6 +2,7 @@ import datetime
import os import os
import re import re
import sys import sys
import types
from django.conf import settings from django.conf import settings
from django.http import HttpResponse, HttpResponseServerError, HttpResponseNotFound from django.http import HttpResponse, HttpResponseServerError, HttpResponseNotFound
@ -277,8 +278,13 @@ def technical_404_response(request, exception):
# tried exists but is an empty list. The URLconf must've been empty. # tried exists but is an empty list. The URLconf must've been empty.
return empty_urlconf(request) return empty_urlconf(request)
urlconf = getattr(request, 'urlconf', settings.ROOT_URLCONF)
if isinstance(urlconf, types.ModuleType):
urlconf = urlconf.__name__
t = Template(TECHNICAL_404_TEMPLATE, name='Technical 404 template') t = Template(TECHNICAL_404_TEMPLATE, name='Technical 404 template')
c = Context({ c = Context({
'urlconf': urlconf,
'root_urlconf': settings.ROOT_URLCONF, 'root_urlconf': settings.ROOT_URLCONF,
'request_path': request.path_info[1:], # Trim leading slash 'request_path': request.path_info[1:], # Trim leading slash
'urlpatterns': tried, 'urlpatterns': tried,
@ -787,7 +793,7 @@ TECHNICAL_404_TEMPLATE = """
<div id="info"> <div id="info">
{% if urlpatterns %} {% if urlpatterns %}
<p> <p>
Using the URLconf defined in <code>{{ settings.ROOT_URLCONF }}</code>, Using the URLconf defined in <code>{{ urlconf }}</code>,
Django tried these URL patterns, in this order: Django tried these URL patterns, in this order:
</p> </p>
<ol> <ol>