dim*_*rik 56 python forms flask
有两个形式<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>
Run Code Online (Sandbox Code Playgroud)
main.py:
...
if request.method == 'POST':
if request.form['add']:
return redirect(url_for('index'))
elif request.form['remove']:
return redirect(url_for('index'))
...
Run Code Online (Sandbox Code Playgroud)
首先提交(添加)效果很好,但第二次(删除)...:
错误请求浏览器(或代理)发送了此服务器无法理解的请求.
我该如何解决这个错误?
UPD:
这很简单:request.form返回ImmutableMultiDict:
...
if 'Like' in request.form.values():
...
elif 'Dislike' in request.form.values():
...
Run Code Online (Sandbox Code Playgroud)
Sea*_*ira 88
作为@Blubber指出,问题是,当瓶它未能找到在一个关键引发HTTP错误args和form字典.Flask默认假设的是,如果您要求某个特定密钥并且它不存在,那么请求中遗漏了一些内容,整个请求无效.
还有另外两种处理您情况的好方法:
使用request.form的.get方法:
if request.form.get('add', None) == "Like":
# Like happened
elif request.form.get('remove', None) == "Dislike":
# Dislike happened
Run Code Online (Sandbox Code Playgroud)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.
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
77856 次 |
| 最近记录: |