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

使用Flask提交表单数据时返回HTTP 405 Method Not Allowed错误如何解决

问题成因
  • 路由未配置允许POST请求:Flask的@app.route装饰器默认仅支持GET请求,你当前的/add_recipe路由没有添加methods参数声明支持POST方法,无论是表单提交到当前页面还是其他未配置POST权限的端点,都会触发405错误。
  • 请求方法判断大小写错误:代码中判断request.method=="post"是无效的,Flask中请求方法的值为全大写格式,正确写法是request.method == "POST",即使后续配置了路由支持POST,小写的判断条件也永远不会触发。
  • 目标端点未配置POST权限:你当前表单action属性设置为browseAll,需要确认对应的/browseAll路由是否已通过methods=["GET", "POST"]参数声明支持POST请求,若未配置,提交到该端点同样会返回405。
修复示例

1. 修正路由配置

如果需要让/add_recipe路由支持表单提交,修改路由代码如下:

# 首先确保已导入对应依赖
from flask import Flask, request, render_template

app = Flask(__name__)

# 添加methods参数声明支持GET和POST请求
@app.route("/add_recipe", methods=["GET", "POST"])  
def addrecipepage():
    if request.method == "POST":
        print ("Successful post request")
        # 这里可以处理表单提交逻辑,比如获取参数、存数据库等
        name = request.form.get("name")
        recipe_text = request.form.get("demo-message")
    return render_template("add_recipe.html")

2. 修正表单配置

如果要将表单提交到/add_recipe路由,修改表单的action属性:

<form id="contact" action="/add_recipe" method="post">
<!-- 其余表单内容保持不变 -->
</form>

如果要提交到/browseAll路由,只需要给/browseAll对应的路由同样添加methods=["GET", "POST"]配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:54:07