gpt4 book ai didi

python - 表单发送错误,Flask

转载 作者:IT老高 更新时间:2023-10-28 20:24:52 26 4
gpt4 key购买 nike

有两个<input type="submit">的表格.但是当我发送它时,第二次提交会导致错误。

布局:

<form action="{{ url_for('index') }}" method="post">
<input type="submit" name="add" value="Like">
<input type="submit" name="remove" value="Dislike">
</form>

main.py:

...
if request.method == 'POST':
if request.form['add']:
return redirect(url_for('index'))
elif request.form['remove']:
return redirect(url_for('index'))
...

第一次提交(添加)效果很好,但第二次(删除)...:

Bad Request The browser(or proxy) sent a request that this server could not understand.

我该如何解决这个错误?

UPD:

这很简单:request.form 返回 ImmutableMultiDict:

... 
if 'Like' in request.form.values():
...
elif 'Dislike' in request.form.values():
...

最佳答案

正如@Blubber 指出的那样,问题在于 Flask 在 argsform 字典中找不到键时会引发 HTTP 错误。 Flask 的默认假设是,如果您要求一个特定的 key 但它不存在,那么请求中会遗漏一些内容,整个请求是无效的。

还有另外两种处理你的情况的好方法:

  1. 使用request.form.get方法:

    if request.form.get('add', None) == "Like":
    # Like happened
    elif request.form.get('remove', None) == "Dislike":
    # Dislike happened
  2. 对两个提交元素使用相同的 name 属性:

    <input type="submit" name="action" value="Like">
    <input type="submit" name="action" value="Dislike">

    # and in your code
    if request.form["action"] == "Like":
    # etc.

关于python - 表单发送错误,Flask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8552675/

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