Python和CGI:在刷新时防止重新发送表单数据

时间:2012-05-19 04:31:22

标签: python html cgi

我是Python的新手(不知怎的,我2天前开始关注python)。

我尝试用CGI编写一个简单的交互式网页,我使用HTML表单来获取用户输入。但是,众所周知,如果我刷新网页,表单数据将再次重新提交。我根本不知道如何防止这种情况发生。

同样的问题,但在php / javascript中,已经讨论过并且可以找到解决方案,但我想找到python案例的答案。

我希望这里有人可以解决我的问题。由于我不太熟悉这种语言,我希望,不仅仅是给我一个描述性的解决方案,那个人也可以给我一些必要的代码。

非常感谢

3 个答案:

答案 0 :(得分:3)

您可能想要查看这些讲座:http://www.udacity.com/overview/Course/cs253/CourseRev/apr2012

第2周将解决您的疑问。

答案 1 :(得分:2)

您的问题不是特定于Python的,而是关于一般Web应用程序设计模式。

  1. 对于未更改Web应用程序状态(查看,查询等)的请求,请使用GET。在回复中渲染页面。
  2. POST用于修改状态的任何请求(提交,编辑,删除后)。
  3. 永远不要在响应中呈现任何内容,提供303 See Other重定向到可以看到POST结果的页面。例如,如果用户在页面http://example.com/blog/123上添加了评论,则POST处理程序可以是http://example.com/submitcomment,但它应该只返回到http://example.com/blog/123#comment5的重定向。
  4. 这就是@mikep所说的Post-Redirect-Get。

    在相关的说明中:帮自己一个忙,跳过CGI。 Python有许多漂亮而干净的Web框架。如果你正在构建一个大应用程序,请尝试使用Flask或Bottle(较小的框架)或直接进入Django。在这里搜索Stack Overflow,了解不同框架的优缺点。

    跳过CGI。很难建立一个好的和可维护的CGI应用程序,有太多东西需要处理,在框架中已经考虑过的事情。

    我一直在浪费时间支持CGI应用程序,并且转向框架是一种解脱。

答案 2 :(得分:1)

查看POST-REDIRECT-GET网络编程模式。