2

我在Django 教程第四页的开头附近,正在vote查看视图,最后是这样的:

# Always return an HttpResponseRedirect after successfully dealing
# with POST data. This prevents data from being posted twice if a
# user hits the Back button.

在尝试vote使用 normalHttpResponse而不是的视图HttpResponseRedirect后,我可以看到在 POST 之后应该向浏览器返回重定向,以便如果用户点击刷新按钮,则不太可能重复提交。(我注意到 Opera 没有发出“你将要重新提交数据”警告!)。

但那是刷新按钮 - 我看不出后退按钮的问题。我错过了什么?

4

1 回答 1

4

如果您前进到另一个页面然后返回,则 POST 请求将在历史记录中。前进然后后退实际上与刷新相同。

如果没有重定向,应该发出的请求列表(存储在历史记录中)将是这样的:

  • 获取/民意调查/1/
  • 发布/投票/1/投票/
  • 获取/其他/

使用重定向,POST 请求被省略,它被重定向到的内容取而代之:

  • 获取/民意调查/1/
  • 获取 /poll/1/results/
  • 获取/其他/
于 2012-07-27T14:23:24.990 回答