Flask调用validate_on_submit()提交表单返回405错误问题求助
错误原因
405状态码代表请求方法不被允许,Flask的路由装饰器默认仅支持GET请求,你当前的表单提交会发送POST请求,服务端没有配置对POST方法的支持,因此触发报错。
修复方案
修改路由装饰器,显式声明支持GET和POST两种请求方法即可,修改后的路由代码如下:
@app.route("/category/add", methods=["GET", "POST"]) def add_category(): form = AddCategory() if form.validate_on_submit(): new_category = Categories( title=form.name.data, description=form.description.data, review=form.review.data, img_url=form.img_url.data, ) db.session.add(new_category) db.session.commit() return render_template("index.html") return render_template("add_category.html", form=form)
注意事项
validate_on_submit()方法仅会在POST请求下触发表单校验逻辑,添加POST方法支持后,你原有代码里的表单提交、数据入库逻辑才能正常执行- 所有需要处理表单提交的Flask路由,都需要在路由装饰器中显式添加
methods=["GET", "POST"]配置
内容的提问来源于stack exchange,提问作者Ankur Rawat
相关产品推荐
相关产品推荐

