【问题标题】:Python and CGI: Prevent resending form data upon refreshingPython 和 CGI​​:防止刷新时重新发送表单数据
【发布时间】:2012-05-19 04:31:21
【问题描述】:

我是 Python 新手(不知何故,我 2 天前开始研究 Python)。

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

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

我希望这里有人可以解决我的问题。由于我对语言不是很熟悉,所以我希望不只是给我一个描述性的解决方案,还可以给我一些必要的代码。

非常感谢

【问题讨论】:

    标签: python html cgi


    【解决方案1】:

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

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

    这就是 @mikep 所说的 Post-Redirect-Get。

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

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

    一段时间以来,我一直在浪费时间支持 CGI 应用程序,而切换到框架是一种解脱。

    【讨论】:

    • 去年我在玩 C++,而 python 是我知道的第二种编程语言(不过,我一周前才开始使用)。由于我学校的服务器有一个允许 CGI 的 python 解释器,我只想同时尝试两者。我想我稍后会尝试 Django。
    【解决方案2】:

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

    第 2 周将解决您的疑问。

    【讨论】:

    • 这似乎是一个不错的参考。非常感谢
    【解决方案3】:

    看看POST-REDIRECT-GET web 编程模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-03
      • 2013-11-23
      • 2019-01-21
      • 1970-01-01
      • 2011-05-18
      相关资源
      最近更新 更多