mirror of https://github.com/django/django.git
Fixed #13684 -- if settings.ROOT_URLCONF isn't defined don't blow up with an UnboundLocalError.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@14488 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
035cb99b47
commit
96cc7baf0c
|
@ -73,13 +73,15 @@ class BaseHandler(object):
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
try:
|
try:
|
||||||
try:
|
# Setup default url resolver for this thread, this code is outside
|
||||||
# Setup default url resolver for this thread.
|
# the try/except so we don't get a spurious "unbound local
|
||||||
|
# variable" exception in the event an exception is raised before
|
||||||
|
# resolver is set
|
||||||
urlconf = settings.ROOT_URLCONF
|
urlconf = settings.ROOT_URLCONF
|
||||||
urlresolvers.set_urlconf(urlconf)
|
urlresolvers.set_urlconf(urlconf)
|
||||||
resolver = urlresolvers.RegexURLResolver(r'^/', urlconf)
|
resolver = urlresolvers.RegexURLResolver(r'^/', urlconf)
|
||||||
|
try:
|
||||||
response = None
|
response = None
|
||||||
|
|
||||||
# Apply request middleware
|
# Apply request middleware
|
||||||
for middleware_method in self._request_middleware:
|
for middleware_method in self._request_middleware:
|
||||||
response = middleware_method(request)
|
response = middleware_method(request)
|
||||||
|
@ -239,4 +241,3 @@ def get_script_name(environ):
|
||||||
if script_url:
|
if script_url:
|
||||||
return force_unicode(script_url[:-len(environ.get('PATH_INFO', ''))])
|
return force_unicode(script_url[:-len(environ.get('PATH_INFO', ''))])
|
||||||
return force_unicode(environ.get('SCRIPT_NAME', u''))
|
return force_unicode(environ.get('SCRIPT_NAME', u''))
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from django.test import TestCase
|
from django.conf import settings
|
||||||
from django.core.signals import got_request_exception
|
from django.core.signals import got_request_exception
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
|
||||||
class TestException(Exception):
|
class TestException(Exception):
|
||||||
|
@ -694,3 +695,19 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest):
|
||||||
self.assert_middleware_usage(pre_middleware, True, True, True, False)
|
self.assert_middleware_usage(pre_middleware, True, True, True, False)
|
||||||
self.assert_middleware_usage(bad_middleware, True, True, True, True)
|
self.assert_middleware_usage(bad_middleware, True, True, True, True)
|
||||||
self.assert_middleware_usage(post_middleware, True, True, True, True)
|
self.assert_middleware_usage(post_middleware, True, True, True, True)
|
||||||
|
|
||||||
|
|
||||||
|
_missing = object()
|
||||||
|
class RootUrlconfTests(TestCase):
|
||||||
|
def test_missing_root_urlconf(self):
|
||||||
|
try:
|
||||||
|
original_ROOT_URLCONF = settings.ROOT_URLCONF
|
||||||
|
del settings.ROOT_URLCONF
|
||||||
|
except AttributeError:
|
||||||
|
original_ROOT_URLCONF = _missing
|
||||||
|
self.assertRaises(AttributeError,
|
||||||
|
self.client.get, "/middleware_exceptions/view/"
|
||||||
|
)
|
||||||
|
|
||||||
|
if original_ROOT_URLCONF is not _missing:
|
||||||
|
settings.ROOT_URLCONF = original_ROOT_URLCONF
|
||||||
|
|
Loading…
Reference in New Issue