如何在Python Bottle框架中防止表单重复提交确认

5 投票
1 回答
2927 浏览
提问于 2025-04-18 05:37

我有:

  • page1:提交一个表单

  • page2:验证这个表单并返回一个页面

现在,当我点击返回按钮时,它并不会回到页面1,而是弹出一个“确认表单重新提交”的窗口。

我该如何防止这种情况发生呢?根据这个回答,我看到了一种推荐的方法:

这是论坛上常用的一种技巧。页面1上的表单将数据提交到页面2,页面2处理这些数据并完成需要的操作,然后它会进行一个HTTP重定向。这样,浏览器记住的最后一个“动作”就是简单地访问页面2,所以在按F5时,表单不会被重新提交。

但我有点困惑。我应该在哪里添加我的重定向呢?我的page2视图看起来是这样的:

@app.route('/StartPage',method='POST')
def test():
    username = request.forms.get('username')
    password = request.forms.get('password')
    return template('StartPage',search_string=search_string,\
                    username=username, \
                    session_id=ses_id)

1 个回答

3

要遵循 POST-Redirect-GET 这个模式,你的 POST 路由不应该直接返回一个模板。

  • 如果能够成功处理表单数据,接下来应该重定向到一个成功页面或者下一个页面。

  • 如果有验证错误,应该重定向回表单页面,可能还会在网址中带上错误的详细信息。

撰写回答