【问题标题】:Getting 400 Error with FlaskFlask 出现 400 错误
【发布时间】:2014-01-31 13:40:11
【问题描述】:

这是基于官方文档中的 Flask 教程。我正在尝试添加一个删除选项,以便我可以删除我不再想要的帖子。我的 if 语句引发了错误,但我不知道为什么。

除了解决我的按钮问题之外,我还有其他几个问题。

为什么要将表单的操作设置为“。”

为什么我不能只设置要删除的按钮名称并忽略该值? (即如果 request.form['delete']: )

如果我想指定要删除的帖子,将帖子 ID 获取到此删除页面的最佳方法是什么(我的测试数据库有一个 id 列)?

我的模板:

{% for message in get_flashed_messages() %}
    <div class=flash>
        {{ message }}
    </div>
{% endfor %}

<form action="." method="POST">
    <input type="submit" name="button" value="Delete">
    <a href="{{ url_for('show_entries') }}">Cancel</a>
</form>

我的 .py 文件:

@app.route('/delete', methods=['GET', 'POST'])
def remove_entry():
    if request.form['button'] == 'Delete':
        flash("Hello world")

        # delete post
        #g.db.execute('DELETE FROM entries (id) VALUES (?)',something])
        #g.db.commit()
        #return redirect(url_for('show_entries'))

    return render_template('delete.html')

【问题讨论】:

  • 您是否使用了 CSRF 保护扩展(如 Flask-WTF)?表单操作中的"." 仅表示:回发到与表单本身的 URL 相同的 URL。
  • 是的,你可以忽略按钮的值,只测试request.form是否有那个键。
  • 但是,请务必将您的问题保留在此处,每次一个问题。
  • 不,我不是。我刚刚开始使用 Flask,所以我对所有可以导入的库都是新手。你推荐一个好的学习资源吗?

标签: python flask


【解决方案1】:

为什么我不能只设置要删除的按钮的名称并忽略该值? (即如果 request.form['delete']: )

其实你需要区分一个GET-和一个POST-Request,像这样:

if request.method == 'POST':
    flash("Hello world")

【讨论】:

    猜你喜欢
    • 2015-03-17
    • 1970-01-01
    • 2016-08-25
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    相关资源
    最近更新 更多