Python Flask视图显示400错误,而不是带有表单的模板
我试图显示带有表单的页面,然后在提交表单时向数据库添加一个Python Flask视图显示400错误,而不是带有表单的模板,python,flask,wtforms,flask-wtforms,Python,Flask,Wtforms,Flask Wtforms,我试图显示带有表单的页面,然后在提交表单时向数据库添加一个Player。但是,我无法查看表单,因为浏览器总是显示400错误请求错误。其他帖子指出,这可能是因为表单输入的名称与我从request.form获得的键不匹配,但我的所有键都匹配。为什么会出现这个错误 {{form.hidden_tag()}} 您的视图接受GET和POST请求请求。表格仅在POST上填写。如果您试图访问一个不存在的密钥,则会引发400错误。最初获取页面时,将不存在任何键 常见的模式是在if request.metho
Player
。但是,我无法查看表单,因为浏览器总是显示400错误请求
错误。其他帖子指出,这可能是因为表单输入的名称与我从request.form
获得的键不匹配,但我的所有键都匹配。为什么会出现这个错误
{{form.hidden_tag()}}
您的视图接受
GET
和POST
请求<代码>请求。表格仅在POST
上填写。如果您试图访问一个不存在的密钥,则会引发400错误。最初获取页面时,将不存在任何键
常见的模式是在if request.method==“POST”
块中保护需要request.form
的代码。在处理POST
请求后返回重定向,否则返回呈现的模板
from flask import url_for, redirect, render_template
@app.route('/addplayer', methods=['GET', 'POST'])
def addplayer():
if request.method == 'POST':
Post(
name=request.form['name'],
available=request.form['available']
).save()
return redirect(url_for('index'))
return render_template('addplayer.html')
由于您似乎正在使用Flask WTF,因此可以使用表单的validate\u on\u submit
方法,而不是选中method
。在这种情况下,还可以通过表单实例访问数据,并使用表单为您呈现输入
from flask import url_for, redirect, render_template
@app.route('/addplayer', methods=['GET', 'POST'])
def addplayer():
form = AddPlayerForm()
if form.validate_on_submit():
Post(
name=form.name.data,
available=form.available.data
).save()
return redirect(url_for('index'))
return render_template('addplayer.html', form=form)
{{form.hidden_tag()}}
{{form.name.label}{{form.name}}
{{form.available.label}{{form.available}}}
from flask import url_for, redirect, render_template
@app.route('/addplayer', methods=['GET', 'POST'])
def addplayer():
form = AddPlayerForm()
if form.validate_on_submit():
Post(
name=form.name.data,
available=form.available.data
).save()
return redirect(url_for('index'))
return render_template('addplayer.html', form=form)