Fixed #29008 -- Fixed crash of 404 debug page when URL path converter raises Http404.

This commit is contained in:
Ngalim Siregar 2019-08-09 22:40:25 +02:00 committed by Mariusz Felisiak
parent 514efa3129
commit 503f60ff57
2 changed files with 10 additions and 3 deletions

View File

@ -5,10 +5,10 @@ import types
from pathlib import Path
from django.conf import settings
from django.http import HttpResponse, HttpResponseNotFound
from django.http import Http404, HttpResponse, HttpResponseNotFound
from django.template import Context, Engine, TemplateDoesNotExist
from django.template.defaultfilters import pprint
from django.urls import Resolver404, resolve
from django.urls import resolve
from django.utils import timezone
from django.utils.datastructures import MultiValueDict
from django.utils.encoding import force_str
@ -483,7 +483,7 @@ def technical_404_response(request, exception):
caller = ''
try:
resolver_match = resolve(request.path)
except Resolver404:
except Http404:
pass
else:
obj = resolver_match.func

View File

@ -12,11 +12,13 @@ from unittest import mock
from django.core import mail
from django.core.files.uploadedfile import SimpleUploadedFile
from django.db import DatabaseError, connection
from django.http import Http404
from django.shortcuts import render
from django.template import TemplateDoesNotExist
from django.test import RequestFactory, SimpleTestCase, override_settings
from django.test.utils import LoggingCaptureMixin
from django.urls import path, reverse
from django.urls.converters import IntConverter
from django.utils.functional import SimpleLazyObject
from django.utils.safestring import mark_safe
from django.views.debug import (
@ -237,6 +239,11 @@ class DebugViewTests(SimpleTestCase):
technical_404_response(mock.MagicMock(), mock.Mock())
m.assert_called_once_with(encoding='utf-8')
def test_technical_404_converter_raise_404(self):
with mock.patch.object(IntConverter, 'to_python', side_effect=Http404):
response = self.client.get('/path-post/1/')
self.assertContains(response, 'Page not found', status_code=404)
class DebugViewQueriesAllowedTests(SimpleTestCase):
# May need a query to initialize MySQL connection