Fixed #17228 -- params context variable is inconsistent

Remove the params variable from the context and just put the variables
in directly.

This had not been committed previously as the original pattern was used
in the functional generic views and we wanted consistency between them,
but django.views.generic.simple.direct_to_template is now gone so we can
do it 'right'.
This commit is contained in:
Marc Tamlyn 2012-08-18 12:52:05 +01:00 committed by Andrew Godwin
parent 212b9826bd
commit f04bb6d798
3 changed files with 13 additions and 5 deletions

View File

@ -142,11 +142,11 @@ class TemplateResponseMixin(object):
class TemplateView(TemplateResponseMixin, ContextMixin, View):
"""
A view that renders a template. This view is different from all the others
insofar as it also passes ``kwargs`` as ``params`` to the template context.
A view that renders a template. This view will also pass into the context
any keyword arguments passed by the url conf.
"""
def get(self, request, *args, **kwargs):
context = self.get_context_data(params=kwargs)
context = self.get_context_data(**kwargs)
return self.render_to_response(context)

View File

@ -144,6 +144,14 @@ year|date:"Y" }}``.
``next_year`` and ``previous_year`` were also added in the context. They are
calculated according to ``allow_empty`` and ``allow_future``.
Context in TemplateView
~~~~~~~~~~~~~~~~~~~~~~~
For consistency with the design of the other generic views,
:class:`~django.views.generic.base.TemplateView` no longer passes a ``params``
dictionary into the context, instead passing the variables from the URLconf
directly into the context.
OPTIONS, PUT and DELETE requests in the test client
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -275,7 +275,7 @@ class TemplateViewTest(TestCase):
"""
response = self.client.get('/template/simple/bar/')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['params'], {'foo': 'bar'})
self.assertEqual(response.context['foo'], 'bar')
self.assertTrue(isinstance(response.context['view'], View))
def test_extra_template_params(self):
@ -284,7 +284,7 @@ class TemplateViewTest(TestCase):
"""
response = self.client.get('/template/custom/bar/')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['params'], {'foo': 'bar'})
self.assertEqual(response.context['foo'], 'bar')
self.assertEqual(response.context['key'], 'value')
self.assertTrue(isinstance(response.context['view'], View))