如何将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
相关产品推荐
相关产品推荐

