gpt4 book ai didi

python - Flask werkzeug.exceptions.BadRequestKeyError

转载 作者:行者123 更新时间:2023-12-01 01:42:48 25 4
gpt4 key购买 nike

我尝试了几种不同的 Flask 应用程序,但每次都会出现以下错误。

werkzeug.exceptions.BadRequestKeyError

werkzeug.exceptions.HTTPException.wrap..newcls: 400 BadRequest: KeyError: 'name'

我不明白为什么。这一定与我的设置有关,因为在不同的应用程序中发生了同样的事情。我建立了一个非常简单的模型,用最少的代码进行演示。如果我删除 name键我得到与 number1 相同的错误 key 。我找不到任何关于此错误的含义的信息。

应用程序.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///flow.sqlite3'

db = SQLAlchemy(app)

from routes import *

if __name__ == '__main__':
# db.drop_all()
db.create_all()
app.run()

路线.py

from flask import render_template, request
from app import app, db
from models import Info

@app.route('/', methods=['GET', 'POST'])
def index():
data = Info(request.form['name'], request.form['number1'], request.form['number2'])
db.session.add(data)
db.session.commit()
return render_template('index.html', data=data)

模型.py

from app import db

class Info(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
number1 = db.Column(db.Integer)
number2 = db.Column(db.Integer)

def __init__(self, name, number1, number2):
self.name = name
self.number1 = number1
self.number2 = number2

index.html

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form id='basic' action="index.html" method="post">
<label for="name">Name:</label>
<input type="text" name="name" placeholder="Name">
<label for="number1">Number 1:</label>
<input type="number" name="number1">
<label for="number2">Number 2:</label>
<input type="number" name="number2">
<button id='btn_submit' type="submit" name="button">Submit</button>
</form>
</body>
</html>

最佳答案

当您的页面首次加载时,没有 request.form 字典,这就是您收到关键错误的原因。您需要编写一个 if 语句来检查表单是否已提交或页面是否正在第一次加载。

from flask import redirect, url_for

@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
data = Info(request.form['name'], request.form['number1'], request.form['number2'])
db.session.add(data)
db.session.commit()
return redirect(url_for('index'))
else:
return render_template('index.html')

关于python - Flask werkzeug.exceptions.BadRequestKeyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51700053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com