mirror of https://github.com/django/django.git
Fixed #14936 -- Tweaked the new render shortcut to reflect non-legacy arguments. Thanks to adamv for the report.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15020 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
6e75ee2b32
commit
0fef92f6f0
|
@ -25,7 +25,10 @@ def render(request, *args, **kwargs):
|
||||||
django.template.loader.render_to_string() with the passed arguments.
|
django.template.loader.render_to_string() with the passed arguments.
|
||||||
Uses a RequestContext by default.
|
Uses a RequestContext by default.
|
||||||
"""
|
"""
|
||||||
httpresponse_kwargs = {'mimetype': kwargs.pop('mimetype', None)}
|
httpresponse_kwargs = {
|
||||||
|
'content_type': kwargs.pop('content_type', None),
|
||||||
|
'status': kwargs.pop('status', None),
|
||||||
|
}
|
||||||
kwargs['context_instance'] = kwargs.get('context_instance', RequestContext(request))
|
kwargs['context_instance'] = kwargs.get('context_instance', RequestContext(request))
|
||||||
return HttpResponse(loader.render_to_string(*args, **kwargs),
|
return HttpResponse(loader.render_to_string(*args, **kwargs),
|
||||||
**httpresponse_kwargs)
|
**httpresponse_kwargs)
|
||||||
|
|
|
@ -15,7 +15,7 @@ introduce controlled coupling for convenience's sake.
|
||||||
``render``
|
``render``
|
||||||
==========
|
==========
|
||||||
|
|
||||||
.. function:: render(request, template[, dictionary][, context_instance][, mimetype])
|
.. function:: render(request, template[, dictionary][, context_instance][, content_type][, status])
|
||||||
|
|
||||||
.. versionadded:: 1.3
|
.. versionadded:: 1.3
|
||||||
|
|
||||||
|
@ -48,22 +48,25 @@ Optional arguments
|
||||||
will be rendered with a ``RequestContext`` instance (filled with values from
|
will be rendered with a ``RequestContext`` instance (filled with values from
|
||||||
``request`` and ```dictionary``).
|
``request`` and ```dictionary``).
|
||||||
|
|
||||||
``mimetype``
|
``content_type``
|
||||||
The MIME type to use for the resulting document. Defaults to the value of
|
The MIME type to use for the resulting document. Defaults to the value of
|
||||||
the :setting:`DEFAULT_CONTENT_TYPE` setting.
|
the :setting:`DEFAULT_CONTENT_TYPE` setting.
|
||||||
|
|
||||||
|
``status``
|
||||||
|
The status code for the response. Defaults to ``200``.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
-------
|
-------
|
||||||
|
|
||||||
The following example renders the template ``myapp/index.html`` with the
|
The following example renders the template ``myapp/index.html`` with the
|
||||||
MIME type ``application/xhtml+xml``::
|
MIME type ``application/xhtml+xml``::
|
||||||
|
|
||||||
from django.shortcuts import render_to_response
|
from django.shortcuts import render
|
||||||
|
|
||||||
def my_view(request):
|
def my_view(request):
|
||||||
# View code here...
|
# View code here...
|
||||||
return render_to_response('myapp/index.html', {"foo": "bar"},
|
return render(request, 'myapp/index.html', {"foo": "bar"},
|
||||||
mimetype="application/xhtml+xml")
|
content_type="application/xhtml+xml")
|
||||||
|
|
||||||
This example is equivalent to::
|
This example is equivalent to::
|
||||||
|
|
||||||
|
@ -75,7 +78,7 @@ This example is equivalent to::
|
||||||
t = loader.get_template('myapp/template.html')
|
t = loader.get_template('myapp/template.html')
|
||||||
c = RequestContext(request, {'foo': 'bar'})
|
c = RequestContext(request, {'foo': 'bar'})
|
||||||
return HttpResponse(t.render(c),
|
return HttpResponse(t.render(c),
|
||||||
mimetype="application/xhtml+xml")
|
content_type="application/xhtml+xml")
|
||||||
|
|
||||||
|
|
||||||
``render_to_response``
|
``render_to_response``
|
||||||
|
|
|
@ -45,9 +45,14 @@ class ShortcutTests(TestCase):
|
||||||
self.assertEquals(response.content, 'FOO.BAR..\n')
|
self.assertEquals(response.content, 'FOO.BAR..\n')
|
||||||
self.assertEquals(response['Content-Type'], 'text/html; charset=utf-8')
|
self.assertEquals(response['Content-Type'], 'text/html; charset=utf-8')
|
||||||
|
|
||||||
def test_render_with_mimetype(self):
|
def test_render_with_content_type(self):
|
||||||
response = self.client.get('/views/shortcuts/render/mimetype/')
|
response = self.client.get('/views/shortcuts/render/content_type/')
|
||||||
self.assertEquals(response.status_code, 200)
|
self.assertEquals(response.status_code, 200)
|
||||||
self.assertEquals(response.content, 'FOO.BAR../path/to/static/media\n')
|
self.assertEquals(response.content, 'FOO.BAR../path/to/static/media\n')
|
||||||
self.assertEquals(response['Content-Type'], 'application/x-rendertest')
|
self.assertEquals(response['Content-Type'], 'application/x-rendertest')
|
||||||
|
|
||||||
|
def test_render_with_status(self):
|
||||||
|
response = self.client.get('/views/shortcuts/render/status/')
|
||||||
|
self.assertEquals(response.status_code, 403)
|
||||||
|
self.assertEquals(response.content, 'FOO.BAR../path/to/static/media\n')
|
||||||
|
|
||||||
|
|
|
@ -149,7 +149,8 @@ urlpatterns += patterns('regressiontests.views.views',
|
||||||
(r'^shortcuts/render_to_response/mimetype/$', 'render_to_response_view_with_mimetype'),
|
(r'^shortcuts/render_to_response/mimetype/$', 'render_to_response_view_with_mimetype'),
|
||||||
(r'^shortcuts/render/$', 'render_view'),
|
(r'^shortcuts/render/$', 'render_view'),
|
||||||
(r'^shortcuts/render/base_context/$', 'render_view_with_base_context'),
|
(r'^shortcuts/render/base_context/$', 'render_view_with_base_context'),
|
||||||
(r'^shortcuts/render/mimetype/$', 'render_view_with_mimetype'),
|
(r'^shortcuts/render/content_type/$', 'render_view_with_content_type'),
|
||||||
|
(r'^shortcuts/render/status/$', 'render_view_with_status'),
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -90,8 +90,14 @@ def render_view_with_base_context(request):
|
||||||
'bar': 'BAR',
|
'bar': 'BAR',
|
||||||
}, context_instance=Context())
|
}, context_instance=Context())
|
||||||
|
|
||||||
def render_view_with_mimetype(request):
|
def render_view_with_content_type(request):
|
||||||
return render(request, 'debug/render_test.html', {
|
return render(request, 'debug/render_test.html', {
|
||||||
'foo': 'FOO',
|
'foo': 'FOO',
|
||||||
'bar': 'BAR',
|
'bar': 'BAR',
|
||||||
}, mimetype='application/x-rendertest')
|
}, content_type='application/x-rendertest')
|
||||||
|
|
||||||
|
def render_view_with_status(request):
|
||||||
|
return render(request, 'debug/render_test.html', {
|
||||||
|
'foo': 'FOO',
|
||||||
|
'bar': 'BAR',
|
||||||
|
}, status=403)
|
||||||
|
|
Loading…
Reference in New Issue