来自Django官方教程的话:
“you should always return an HttpResponseRedirect after successfully dealing with POST data. This tip isn’t specific to Django; it’s just good Web development practice.”
为什么呢?
“This prevents data from being posted twice if a user hits the Back button.”
为什么会两次提交数据?
|  |      1wy315700      2015-05-06 20:05:25 +08:00 防止刷新页面的时候重复提交 | 
|  |      2cloudzhou      2015-05-06 20:06:54 +08:00  2 当你 POST 数据之后,浏览器保留了这次 http 请求,之后在你的 F5 或者 返回 时,浏览器重新执行了这一次请求,在一些关键的行为,比如支付,重复 POST 可能导致不好的后果。 所以推荐 POST 之后做一个重定向。 这种方法其实也不能避免用户的重复点击行为,可能因为网络状况或者误操作,所以一般有如下做法: 1 点击 submit 之后失去焦点,不能再次点击,前台控制。 2 每次 POST 带有一个唯一性的 token,后台发现这个 token 已经被处理,不再执行这次请求,后台控制。 | 
|  |      3endoffight      2015-05-06 20:14:46 +08:00 其根本原因是POST方法的非幂等 | 
|  |      4vJianZhen OP @endoffight 非幂等 是什么? | 
|  |      5vJianZhen OP @cloudzhou 说得不错! 深究进去,浏览器保留了 http 请求时,在 F5 或者 返回 时为嘛会再次执行请求?。。。 | 
|      9mfaner      2015-05-06 22:10:13 +08:00  1 Post-Redirect-Get http://en.wikipedia.org/wiki/Post/Redirect/Get | 
|      13wurenzhidi      2018-10-08 15:19:41 +08:00 好棒! |