You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask开发中点击浏览器刷新按钮仍发送POST请求如何解决?

现有代码问题说明

你当前的代码存在逻辑顺序错误:return render_template('signup.htm') 放置在POST请求处理逻辑之前,无论收到GET还是POST请求都会直接返回模板,后续的POST处理代码永远不会执行,需要先调整代码顺序。


刷新触发POST请求的原因

用户提交表单完成POST请求后,浏览器会默认将最后一次发起的请求记录为POST,点击刷新时浏览器会自动重发上一次的请求,就会出现重复提交POST的问题,部分浏览器还会弹出「是否重新提交表单」的提示。


实现刷新仅发送GET请求的方案

可以通过 POST/Redirect/GET(PRG) 模式解决,处理完POST请求后不要直接返回页面,而是返回重定向响应,让浏览器主动发起GET请求加载页面,此时浏览器记录的最后一次请求就是GET,刷新时就只会发送GET请求。


修正后的示例代码

from flask import redirect, url_for, request, render_template

@app.route('/signup', methods=["GET", "POST"])
def signup():
    if request.method == "POST":
        # 你的业务逻辑:表单校验、数据写入数据库等
        password = request.form['password']
        username = request.form['username']
        # 处理完成后重定向,可根据需求跳转到注册页、登录页等
        return redirect(url_for('signup'))
    # 仅GET请求时返回注册页面模板
    return render_template('signup.htm')

内容的提问来源于stack exchange,提问作者DarthTensor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:24:05