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

Flask表单提交遇405错误及URL未找到问题求助

问题分析与修复方案

核心问题

  1. 405 Method Not Allowed错误:Flask路由按定义顺序匹配,你的动态路由@app.route('/<string:page_name>')写在/generic路由之前,会优先接管所有请求(包括POST到/generic的表单提交),而动态路由默认仅支持GET方法,导致POST请求被拒绝。
  2. /generic URL未找到:动态路由优先匹配后,/generic被当作page_name参数,尝试渲染generic.html模板;若模板不存在则报错,同时你的submit_form路由完全没被触发。

修复步骤

1. 调整路由顺序

将具体的/generic路由移到动态路由之前,确保Flask优先匹配明确路径:

import csv
from flask import Flask, render_template, request, redirect, url_for
import os

app = Flask(__name__)

@app.route('/')
def my_home():
    return render_template('index.html')

# 把/generic路由放在动态路由前面
@app.route('/generic', methods=['GET', 'POST'])
def submit_form():
    print("You have reached the right place")
    if request.method == 'POST':
        try:
            data = request.form.to_dict()
            write_to_csv(data)
            # 用url_for生成可靠跳转链接
            return redirect(url_for('html_page', page_name='generic.html'))
        except Exception as e:
            print(e)
            return 'Something went wrong, It did not save in the database'
    # GET请求直接返回generic.html模板
    return render_template('generic.html')

# 动态路由放在最后
@app.route('/<string:page_name>')
def html_page(page_name):
    return render_template(page_name)

def write_to_csv(data):
    with open('database.csv', mode='a', newline='') as database2:
        name = data['name']
        email = data['email']
        message = data['message']
        csv_writer = csv.writer(database2, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
        csv_writer.writerow([name, email, message])

2. 保留原表单配置

你的HTML表单action="/generic"配置正确,无需修改:

<form method="post" action="/generic">
    <!-- 表单字段内容 -->
</form>

3. 确认模板文件存在

检查项目的templates目录下是否存在generic.html,若不存在需创建该模板文件,否则访问或跳转时会提示模板未找到。


额外优化

  • 移除重复的import csv语句,代码中重复导入了两次,保留一次即可。
  • 始终使用url_for生成路由链接,避免硬写路径导致的维护问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:12:49