我正在阅读djangobook,并对HttpResponseRedirect
和render_to_response
提出疑问。
假设我有一个联系表单,它会发布数据以确认视图。它遍历所有验证和数据库的东西。然后,作为通常的方式,我用
输出htmlreturn render_to_response('thank_you.html',
dict(user_code = user_code),
context_instance=RequestContext(request))
但是,该书建议“您应该始终为成功的POST
请求发出重定向”。因为如果用户在此页面上“刷新”,则会重复该请求。我想知道将{_ 1}}中的user_code发送到HttpResponseRedirect
的最佳方式是什么。
答案 0 :(得分:0)
当您send a redirect时,您正在向用户发送回复(a 302 HTTP response),然后他们会向提供的网址发出全新请求。这是一个全新的请求/响应周期,因此除非将其保存在会话变量,缓存,cookie等中,否则无法提供数据。
您可以做的不是告诉用户重定向,而是在同一个请求中调用您想要自己显示的视图(即在您发出重定向的位置),然后您可以传递任何您喜欢的内容
答案 1 :(得分:0)
将信息传递给查询字符串:
thank_you/?user_code=1234
或者使用会话变量。
查询字符串的问题是用户可以看到数据。