与HttpResponseRedirect一起发送变量的最佳方法

时间:2011-11-09 01:15:56

标签: django django-views

我正在阅读djangobook,并对HttpResponseRedirectrender_to_response提出疑问。

假设我有一个联系表单,它会发布数据以确认视图。它遍历所有验证和数据库的东西。然后,作为通常的方式,我用

输出html
return render_to_response('thank_you.html',
                          dict(user_code = user_code),
                          context_instance=RequestContext(request))

但是,该书建议“您应该始终为成功的POST请求发出重定向”。因为如果用户在此页面上“刷新”,则会重复该请求。我想知道将{_ 1}}中的user_code发送到HttpResponseRedirect的最佳方式是什么。

2 个答案:

答案 0 :(得分:0)

当您send a redirect时,您正在向用户发送回复(a 302 HTTP response),然后他们会向提供的网址发出全新请求。这是一个全新的请求/响应周期,因此除非将其保存在会话变量,缓存,cookie等中,否则无法提供数据。

您可以做的不是告诉用户重定向,而是在同一个请求中调用您想要自己显示的视图(即在您发出重定向的位置),然后您可以传递任何您喜欢的内容

答案 1 :(得分:0)

将信息传递给查询字符串:

thank_you/?user_code=1234

或者使用会话变量。

查询字符串的问题是用户可以看到数据。