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

Flask+SQL新手遇Method Not Allowed错误:管理员页面数据入库问题

问题解决:Method Not Allowed 及代码错误修复

一、解决Method Not Allowed错误

你的路由/admin/jobs仅允许POST方法,若通过浏览器直接访问该URL(默认是GET请求)就会触发此错误。需修改路由,同时支持GET和POST方法:

@app.route("/admin/jobs", methods=['GET', 'POST'])
def add():
    if request.method == 'POST':
        data = request.form
        add_admin_to_db(data)
        return "数据添加成功"  # 必须返回响应内容
    # GET请求时返回管理员表单页面
    return render_template('admin_jobs.html')  # 需确保存在对应模板文件

二、修复函数参数不匹配问题

add_admin_to_db定义了job_id和data两个参数,但调用时仅传入data,会引发参数错误。若job_id为数据库自增字段无需手动传入,直接移除该参数:

def add_admin_to_db(data):  # 移除多余的job_id参数
    row = {
        "title": data["title"],
        "location": data["location"],  # 修正拼写错误:loacation → location
        "salary": data["salary"],
        "requirement": data["requirement"],
    }
    with engine.connect() as conn:
        query = text(
            "INSERT INTO jobs (title,location,salary,requirement) VALUES (:title,:location,:salary,:requirement)"
        )
        conn.execute(query, row)
        conn.commit()

三、表单页面配套设置

确保你的管理员表单页面(如admin_jobs.html)中,表单的请求方法为POST,且提交地址指向该路由:

<form action="/admin/jobs" method="POST">
    <input type="text" name="title" placeholder="职位名称" required>
    <input type="text" name="location" placeholder="工作地点" required>
    <input type="text" name="salary" placeholder="薪资" required>
    <textarea name="requirement" placeholder="任职要求" required></textarea>
    <button type="submit">提交数据</button>
</form>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:50:13