当前位置: 首页 > 面试题库 >

Flask视图显示400错误而不是带有表单的模板

白子默
2023-03-14
问题内容

我正在尝试显示一个带有表单的页面,然后Player在提交表单时将一个添加到数据库。但是,我无法查看该表单,因为浏览器始终显示400 Bad Request错误。其他帖子表明这可能是因为表单输入的名称与我从中获取的键不匹配request.form,但是我所有的键均匹配。为什么会出现此错误?

<form method="post">
    {{ form.hidden_tag() }}
    <input name="name">
    <input name="available">
    <input type="submit">
</form>



@app.route('/addplayer', methods=['GET', 'POST'])
def addplayer():
    connect('basketball_contracts', host='localhost', port=27017)
    n = request.form['name']
    a = request.form['available']
    post= Post(
        name=n,
        available=a
    )
    post.tags = ['test']
    post.save()
    return render_template('addplayer.html', form=form)

问题答案:

您的视图接受GETPOST请求。request.form仅在上填写POST。如果您尝试访问不存在的密钥,则会引发400错误。GET最初页面时没有键。

造成这种情况的常见模式是守护需要代码request.form在一个if request.method == 'POST'块中。处理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_on_submit方法而不是使用check
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 method=post>
    {{ form.hidden_tag() }}
    {{ form.name.label}} {{ form.name }}<br>
    {{ form.available.label }} {{ form.available }}<br>
    <input type=submit value="Add Player">
</form>


 类似资料:
  • 问题内容: 我是Django表单,它可以检查表单是否有效: 但是我错过了如果无效的怎么办?如何返回带有错误消息的表格?我没有在任何示例中看到“其他”。 问题答案: 如果在表单无效时呈现相同的视图,则可以在模板中使用来访问表单错误。 一个例子:

  • 我已经制作了Hello World RCP应用程序,得到了以下类结构: 向Perspective.createInitialLayout()添加额外代码: 但不显示视图。 我将breakpoint设置到perspective.createInitialLayout()中,发现它没有执行。 我的观点声明是: ApplicationWorkbenchAdvisor.GetInitialWindowPe

  • 问题内容: 我正在使用Codeigniter,而不是错误消息,我只是得到一个空白页。有什么方法可以显示PHP错误消息吗?当我没有反馈时很难调试。 我的环境是带有Apache的Ubuntu。 问题答案: 由于到目前为止,没有一种解决方案对您有用,请尝试以下一种方法: 这明确地告诉PHP 显示 错误。某些环境可以默认禁用此功能。 这是我的环境设置的样子:

  • 它将我带到图库以选择图像,但未显示在应用程序中,当单击上传按钮时,它只是一个空白图像视图 < li >我的Java代码 < li>XML代码 运行时显示此错误 java.lang.IllegalArgumentException:uri不能为空 以下两处给出错误的行显示了uri错误

  • 此表单在基于函数的视图中显示单选按钮,但在我引入基于类的视图时更改为复选框,有什么解决办法。我希望他们再次显示单选按钮 表单.py models.py 模板 views.py