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

