1
0
mirror of https://github.com/django/django.git synced 2025-10-24 06:06:09 +00:00

Fixed #31877 -- Reverted "Fixed #19878 -- Deprecated TemplateView passing URL kwargs into context."

This reverts commit 4ed534758c.
This commit is contained in:
Mariusz Felisiak
2020-08-24 09:00:12 +02:00
parent 04e87e79a0
commit bb8f66934d
7 changed files with 33 additions and 84 deletions

View File

@@ -2,12 +2,9 @@ import time
from django.core.exceptions import ImproperlyConfigured
from django.http import HttpResponse
from django.test import (
RequestFactory, SimpleTestCase, ignore_warnings, override_settings,
)
from django.test import RequestFactory, SimpleTestCase, override_settings
from django.test.utils import require_jinja2
from django.urls import resolve
from django.utils.deprecation import RemovedInDjango40Warning
from django.views.generic import RedirectView, TemplateView, View
from . import views
@@ -350,6 +347,25 @@ class TemplateViewTest(SimpleTestCase):
view = TemplateView.as_view(template_name='generic_views/using.html', template_engine='jinja2')
self.assertEqual(view(request).render().content, b'Jinja2\n')
def test_template_params(self):
"""
A generic template view passes kwargs as context.
"""
response = self.client.get('/template/simple/bar/')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['foo'], 'bar')
self.assertIsInstance(response.context['view'], View)
def test_extra_template_params(self):
"""
A template view can be customized to return extra context.
"""
response = self.client.get('/template/custom/bar/')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['foo'], 'bar')
self.assertEqual(response.context['key'], 'value')
self.assertIsInstance(response.context['view'], View)
def test_cached_views(self):
"""
A template view can be cached
@@ -568,38 +584,3 @@ class SingleObjectTemplateResponseMixinTest(SimpleTestCase):
)
with self.assertRaisesMessage(ImproperlyConfigured, msg):
view.get_template_names()
@override_settings(ROOT_URLCONF='generic_views.urls')
class DeprecationTests(SimpleTestCase):
@ignore_warnings(category=RemovedInDjango40Warning)
def test_template_params(self):
"""A generic template view passes kwargs as context."""
response = self.client.get('/template/simple/bar/')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['foo'], 'bar')
self.assertIsInstance(response.context['view'], View)
@ignore_warnings(category=RemovedInDjango40Warning)
def test_extra_template_params(self):
"""A template view can be customized to return extra context."""
response = self.client.get('/template/custom/bar1/bar2/')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['foo1'], 'bar1')
self.assertEqual(response.context['foo2'], 'bar2')
self.assertEqual(response.context['key'], 'value')
self.assertIsInstance(response.context['view'], View)
def test_template_params_warning(self):
response = self.client.get('/template/custom/bar1/bar2/')
self.assertEqual(response.status_code, 200)
msg = (
'TemplateView passing URL kwargs to the context is deprecated. '
'Reference %s in your template through view.kwargs instead.'
)
with self.assertRaisesMessage(RemovedInDjango40Warning, msg % 'foo1'):
str(response.context['foo1'])
with self.assertRaisesMessage(RemovedInDjango40Warning, msg % 'foo2'):
str(response.context['foo2'])
self.assertEqual(response.context['key'], 'value')
self.assertIsInstance(response.context['view'], View)