diff options
| author | Keryn Knight <keryn@kerynknight.com> | 2022-01-07 12:57:03 +0000 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-01-08 14:54:10 +0100 |
| commit | 2ea0321058a3ba04306f8e6b9d1e1aa99e164a3f (patch) | |
| tree | 05a43a78940169cb06a6021961b65804f253b306 | |
| parent | c959aa99aa365c123a3b5ca72df9d07e0e3fe6e5 (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.py | 5 | ||||
| -rw-r--r-- | docs/releases/4.0.2.txt | 3 | ||||
| -rw-r--r-- | tests/view_tests/tests/test_debug.py | 14 |
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): """ |
