How do I pass template context information when using HttpResponseRedirect in Django? How do I pass template context information when using HttpResponseRedirect in Django? python python

How do I pass template context information when using HttpResponseRedirect in Django?


For the sake of completion and future reference, you can now use the messages framework. After you install it:

views.py

from django.contrib import messagesdef view(request):  # your code  messages.success(request, "Your data has been saved!")  HttpResponseRedirect(request.path)

template.html

{% if messages %}<ul class="messages">  {% for message in messages %}  <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>  {% endfor %}</ul>{% endif %}


if you are using auth and have a logged in user you could:

http://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.models.User.message_set.create

GET params are also hackable. The querystring, as mentioned in other answers, could be used.

I think the most preferred way would be to use the sessions framework. That way you can load up whatever you want in the context and get

{{ request.session.foo }} 

foo could be the message or you could do:

{% ifequal request.session.foo 1 %} Nice work! {% else %} Almost! {% endifequal %}

and other fun stuff.

http://docs.djangoproject.com/en/dev/topics/http/sessions/#using-sessions-in-views


You can't. HttpResponseRedirect sends a client-side redirect (HTTP status code 302) to the browser, and then the browser re-requests another page.

You can set a URL query string on the redirect, though that will be visible to the user and anyone intercepting HTTP requests (i.e. proxies), and is therefore not suitable for sensitive information.