summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeryn Knight <keryn@kerynknight.com>2022-01-07 12:57:03 +0000
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2022-01-08 14:54:10 +0100
commit2ea0321058a3ba04306f8e6b9d1e1aa99e164a3f (patch)
tree05a43a78940169cb06a6021961b65804f253b306
parentc959aa99aa365c123a3b5ca72df9d07e0e3fe6e5 (diff)
[4.0.x] Fixed #33425 -- Fixed view name for CBVs on technical 404 debug page.
Regression in 0c0b87725bbcffca3bc3a7a2c649995695a5ae3b. Backport of 2a66c102d9c674fadab252a28d8def32a8b626ec from main
-rw-r--r--django/views/debug.py5
-rw-r--r--docs/releases/4.0.2.txt3
-rw-r--r--tests/view_tests/tests/test_debug.py14
3 files changed, 17 insertions, 5 deletions
diff --git a/django/views/debug.py b/django/views/debug.py
index 16c9ad7fc8..2a4593e87e 100644
--- a/django/views/debug.py
+++ b/django/views/debug.py
@@ -545,8 +545,9 @@ def technical_404_response(request, exception):
obj = resolver_match.func
if hasattr(obj, 'view_class'):
- caller = obj.view_class
- elif hasattr(obj, '__name__'):
+ obj = obj.view_class
+
+ if hasattr(obj, '__name__'):
caller = obj.__name__
elif hasattr(obj, '__class__') and hasattr(obj.__class__, '__name__'):
caller = obj.__class__.__name__
diff --git a/docs/releases/4.0.2.txt b/docs/releases/4.0.2.txt
index 21b1a56884..71bb71e91d 100644
--- a/docs/releases/4.0.2.txt
+++ b/docs/releases/4.0.2.txt
@@ -14,3 +14,6 @@ Bugfixes
* Fixed a regression in Django 4.0 where ``help_text`` was HTML-escaped in
automatically-generated forms (:ticket:`33419`).
+
+* Fixed a regression in Django 4.0 that caused displaying an incorrect name for
+ class-based views on the technical 404 debug page (:ticket:`33425`).
diff --git a/tests/view_tests/tests/test_debug.py b/tests/view_tests/tests/test_debug.py
index 5ceb7fc39e..7c49fa51f3 100644
--- a/tests/view_tests/tests/test_debug.py
+++ b/tests/view_tests/tests/test_debug.py
@@ -177,7 +177,11 @@ class DebugViewTests(SimpleTestCase):
html=True,
)
self.assertContains(response, "Raised by:", status_code=404)
- self.assertContains(response, "view_tests.views.technical404", status_code=404)
+ self.assertContains(
+ response,
+ '<td>view_tests.views.technical404</td>',
+ status_code=404,
+ )
self.assertContains(
response,
'<p>The current path, <code>technical404/</code>, matched the '
@@ -188,8 +192,12 @@ class DebugViewTests(SimpleTestCase):
def test_classbased_technical_404(self):
response = self.client.get('/classbased404/')
- self.assertContains(response, "Raised by:", status_code=404)
- self.assertContains(response, "view_tests.views.Http404View", status_code=404)
+ self.assertContains(
+ response,
+ '<th>Raised by:</th><td>view_tests.views.Http404View</td>',
+ status_code=404,
+ html=True,
+ )
def test_non_l10ned_numeric_ids(self):
"""