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

如何将Flask同一路由的GET与POST方法拆分到不同函数实现

Flask 同路径拆分GET、POST请求的实现方法

Flask 允许同一个路径绑定多个视图函数,只要各自指定对应的请求方法即可,注意两个函数不能使用相同的函数名,否则后定义的函数会覆盖先定义的内容。拆分后的正确实现代码如下:

# 处理GET请求
@app.route("/upload", methods=["GET"])
def upload_file_get():
    form = FileUploadForm()
    return render_template("upload_file.html", form=form)

# 处理POST请求
@app.route("/upload", methods=["POST"])
def upload_file_post():
    form = FileUploadForm()
    if form.validate_on_submit():
        file = form.document.data
        file_name = secure_filename(file.filename)
        save_path = get_user_uploads_folder(current_user) / file_name
        # 原代码此处缩进错误,已补充文件存在判断逻辑
        if save_path.exists():
            return redirect(url_for("upload_file_get"))
        file.save(save_path)
        return redirect(url_for("list_user_files"))
    # 表单校验失败时返回上传页携带错误提示
    return render_template("upload_file.html", form=form)

相关说明:

  • 调用url_for生成路由地址时,需要传入对应的函数名,比如GET请求的路由地址要使用url_for("upload_file_get")获取
  • 如果你使用的是Flask 2.0及以上版本,可以使用更简洁的快捷装饰器写法:
@app.get("/upload")
def upload_file_get():
    form = FileUploadForm()
    return render_template("upload_file.html", form=form)

@app.post("/upload")
def upload_file_post():
    # POST处理逻辑和上方一致
    ...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:45:06