render_to_response in Django 1.8 missing a request parameter?

541 views
Skip to first unread message

Stephen Brooks

unread,
Apr 7, 2015, 6:28:06 AM4/7/15
to django-d...@googlegroups.com
I note from the release notes for Django 1.8 https://docs.djangoproject.com/en/1.8/releases/1.8/ the remark under the section:

"dictionary and context_instance arguments of rendering functions" (which includes django.shortcuts.render_to_response())

"If you’re passing a Context in context_instance, pass a dict in the context parameter instead. If you’re passing a RequestContext, pass the request separately in the request parameter."

However, render_to_response does not have a request parameter. Is that an omission?

I use the following idiom quite a lot:

response = render_to_response('some_template.html', {'foo': 'bar'}, RequestContext(request))

If the passing of a context_instance is now to be avoided, I would expect to be able pass in the request object directly to render_to_response. Otherwise how are the context processors to do their job?

-- Stephen

Marc Tamlyn

unread,
Apr 7, 2015, 6:31:24 AM4/7/15
to django-d...@googlegroups.com
This is probably a slight error in the documentation, however what you really want to use is the `render()` function when you want a request context.


--
You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-develop...@googlegroups.com.
To post to this group, send email to django-d...@googlegroups.com.
Visit this group at http://groups.google.com/group/django-developers.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/e9b54373-9901-4a5a-8101-89b6a7cedaf6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Stephen Brooks

unread,
Apr 7, 2015, 6:37:56 AM4/7/15
to django-d...@googlegroups.com
In that case the render_to_response shortcut has little value and should probably be removed in Django 2.0 ??

Marc Tamlyn

unread,
Apr 7, 2015, 6:50:53 AM4/7/15
to django-d...@googlegroups.com
The purpose of render_to_response is "render without a request context" now as far as I can tell. There are reasons why you would do this, whether they justify the existence of the shortcut is another question.

Aymeric Augustin

unread,
Apr 7, 2015, 7:49:08 AM4/7/15
to django-d...@googlegroups.com
Hi Stephen,

The only difference between render_to_response and render is that render_to_response doesn't know about the current request while render does.

If you were using:

response = render_to_response('some_template.html', {'foo': 'bar'}, RequestContext(request))

Now you should use:

response = render(request, 'some_template.html', {'foo': 'bar'})

The latter idiom works since Django 1.3 and has obsoleted the former in many projects.

-- 
Aymeric.




--
You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-develop...@googlegroups.com.
To post to this group, send email to django-d...@googlegroups.com.
Visit this group at http://groups.google.com/group/django-developers.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/e9b54373-9901-4a5a-8101-89b6a7cedaf6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Aymeric.
Reply all
Reply to author
Forward
0 new messages