Skip to content

Commit

Permalink
Restored support for multiple template names in render(_to_response).
Browse files Browse the repository at this point in the history
This possibility was documented but not tested.

It had been broken during the multiple template engines refactor.
  • Loading branch information
aaugustin committed Jan 7, 2015
1 parent eaa1a22 commit 127f9e0
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 2 deletions.
5 changes: 3 additions & 2 deletions django/shortcuts.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def render_to_response(template_name, context=None,
and dirs is _dirs_undefined
and dictionary is _dictionary_undefined):
# No deprecated arguments were passed - use the new code path
content = loader.get_template(template_name).render(context)
content = loader.render_to_string(template_name, context)

else:
# Some deprecated arguments were passed - use the legacy code path
Expand All @@ -56,7 +56,8 @@ def render(request, template_name, context=None,
and dirs is _dirs_undefined
and dictionary is _dictionary_undefined):
# No deprecated arguments were passed - use the new code path
content = loader.get_template(template_name).render(context, request)
# In Django 2.0, request should become a positional argument.
content = loader.render_to_string(template_name, context, request=request)

else:
# Some deprecated arguments were passed - use the legacy code path
Expand Down
10 changes: 10 additions & 0 deletions tests/shortcuts/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ def test_render_to_response(self):
self.assertEqual(response.content, b'FOO.BAR..\n')
self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')

def test_render_to_response_with_multiple_templates(self):
response = self.client.get('/render_to_response/multiple_templates/')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.content, b'FOO.BAR..\n')

@ignore_warnings(category=RemovedInDjango20Warning)
def test_render_to_response_with_request_context(self):
response = self.client.get('/render_to_response/request_context/')
Expand Down Expand Up @@ -51,6 +56,11 @@ def test_render(self):
self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')
self.assertFalse(hasattr(response.context.request, 'current_app'))

def test_render_with_multiple_templates(self):
response = self.client.get('/render/multiple_templates/')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.content, b'FOO.BAR../path/to/static/media/\n')

@ignore_warnings(category=RemovedInDjango20Warning)
def test_render_with_base_context(self):
response = self.client.get('/render/base_context/')
Expand Down
2 changes: 2 additions & 0 deletions tests/shortcuts/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@

urlpatterns = [
url(r'^render_to_response/$', views.render_to_response_view),
url(r'^render_to_response/multiple_templates/$', views.render_to_response_view_with_multiple_templates),
url(r'^render_to_response/request_context/$', views.render_to_response_view_with_request_context),
url(r'^render_to_response/content_type/$', views.render_to_response_view_with_content_type),
url(r'^render_to_response/dirs/$', views.render_to_response_view_with_dirs),
url(r'^render_to_response/context_instance_misuse/$', views.render_to_response_with_context_instance_misuse),
url(r'^render/$', views.render_view),
url(r'^render/multiple_templates/$', views.render_view_with_multiple_templates),
url(r'^render/base_context/$', views.render_view_with_base_context),
url(r'^render/content_type/$', views.render_view_with_content_type),
url(r'^render/dirs/$', views.render_with_dirs),
Expand Down
20 changes: 20 additions & 0 deletions tests/shortcuts/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,16 @@ def render_to_response_view(request):
})


def render_to_response_view_with_multiple_templates(request):
return render_to_response([
'shortcuts/no_such_template.html',
'shortcuts/render_test.html',
], {
'foo': 'FOO',
'bar': 'BAR',
})


def render_to_response_view_with_request_context(request):
return render_to_response('shortcuts/render_test.html', {
'foo': 'FOO',
Expand Down Expand Up @@ -50,6 +60,16 @@ def render_view(request):
})


def render_view_with_multiple_templates(request):
return render(request, [
'shortcuts/no_such_template.html',
'shortcuts/render_test.html',
], {
'foo': 'FOO',
'bar': 'BAR',
})


def render_view_with_base_context(request):
return render(request, 'shortcuts/render_test.html', {
'foo': 'FOO',
Expand Down

0 comments on commit 127f9e0

Please sign in to comment.