Fixed #29353 -- Made StaticFilesHandler return a 404 response when settings.DEBUG is False
This commit is contained in:
parent
c591bc3cce
commit
a9189d27ef
|
@ -4,6 +4,7 @@ from urllib.request import url2pathname
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.staticfiles import utils
|
from django.contrib.staticfiles import utils
|
||||||
from django.contrib.staticfiles.views import serve
|
from django.contrib.staticfiles.views import serve
|
||||||
|
from django.core.handlers.exception import response_for_exception
|
||||||
from django.core.handlers.wsgi import WSGIHandler, get_path_info
|
from django.core.handlers.wsgi import WSGIHandler, get_path_info
|
||||||
|
|
||||||
|
|
||||||
|
@ -59,6 +60,7 @@ class StaticFilesHandler(WSGIHandler):
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
from django.views import debug
|
from django.views import debug
|
||||||
return debug.technical_404_response(request, e)
|
return debug.technical_404_response(request, e)
|
||||||
|
return response_for_exception(request, e)
|
||||||
return super().get_response(request)
|
return super().get_response(request)
|
||||||
|
|
||||||
def __call__(self, environ, start_response):
|
def __call__(self, environ, start_response):
|
||||||
|
|
|
@ -16,7 +16,7 @@ from django.contrib.staticfiles.management.commands import (
|
||||||
)
|
)
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
from django.core.management import CommandError, call_command
|
from django.core.management import CommandError, call_command
|
||||||
from django.test import override_settings
|
from django.test import RequestFactory, override_settings
|
||||||
from django.test.utils import extend_sys_path
|
from django.test.utils import extend_sys_path
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils._os import symlinks_supported
|
from django.utils._os import symlinks_supported
|
||||||
|
@ -44,6 +44,18 @@ class TestRunserver(StaticFilesTestCase):
|
||||||
command.get_handler(use_static_handler=True, insecure_serving=True)
|
command.get_handler(use_static_handler=True, insecure_serving=True)
|
||||||
self.assertEqual(mocked.call_count, 1)
|
self.assertEqual(mocked.call_count, 1)
|
||||||
|
|
||||||
|
def test_404_response(self):
|
||||||
|
command = runserver.Command()
|
||||||
|
handler = command.get_handler(use_static_handler=True, insecure_serving=True)
|
||||||
|
missing_static_file = os.path.join(settings.STATIC_URL, 'unknown.css')
|
||||||
|
req = RequestFactory().get(missing_static_file)
|
||||||
|
with override_settings(DEBUG=False):
|
||||||
|
response = handler.get_response(req)
|
||||||
|
self.assertEqual(response.status_code, 404)
|
||||||
|
with override_settings(DEBUG=True):
|
||||||
|
response = handler.get_response(req)
|
||||||
|
self.assertEqual(response.status_code, 404)
|
||||||
|
|
||||||
|
|
||||||
class TestFindStatic(TestDefaults, CollectionTestCase):
|
class TestFindStatic(TestDefaults, CollectionTestCase):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue