有两种形式的<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'))
...
第一次提交(添加)效果很好,但是第二次(删除)...:
错误的请求浏览器(或代理)发送了此服务器无法理解的请求。
我该如何解决此错误?
UPD :
这很简单:
request.form返回ImmutableMultiDict:
...
if 'Like' in request.form.values():
...
elif 'Dislike' in request.form.values():
...
参考方案
正如@Blubber指出的那样,问题在于Flask在args
和form
字典中找不到键时会引发HTTP错误。 Flask默认情况下假设的是,如果您要的是特定密钥,而该密钥不存在,则请求中遗漏了某些内容,整个请求均无效。
还有两种其他方法可以处理您的情况:
request.form
的.get
方法:
if request.form.get('add', None) == "Like":
# Like happened
elif request.form.get('remove', None) == "Dislike":
# Dislike happened
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 3中,要加载以前保存的json,如下所示:json.dumps(dictionary)输出是这样的{"('Hello',)": 6, "('Hi',)": 5}当我使用json.loads({"('Hello',)": 6,…
Python uuid4,如何限制唯一字符的长度 - python在Python中,我正在使用uuid4()方法创建唯一的字符集。但是我找不到将其限制为10或8个字符的方法。有什么办法吗?uuid4()ffc69c1b-9d87-4c19-8dac-c09ca857e3fc谢谢。 参考方案 尝试:x = uuid4() str(x)[:8] 输出:"ffc69c1b" Is there a way to…
Python 3会流行吗? - python我已经学习了一些Python 2和Python 3,似乎Python 2总体上比Python 3更好。这就是我的问题所在。是否有充分的理由真正切换到python 3? 参考方案 总体上,甚至在大多数细节上,Python3都比Python2更好。关于第三方库, Python 3落后于的唯一区域是。使Python变得如此出色的原因不仅在于它作为一种语言的内在特性…
Python-如何检查Redis服务器是否可用 - python我正在开发用于访问Redis Server的Python服务(类)。我想知道如何检查Redis Server是否正在运行。而且如果某种原因我无法连接到它。这是我的代码的一部分import redis rs = redis.Redis("localhost") print rs 它打印以下内容<redis.client.Redis o…
无法注释掉涉及多行字符串的代码 - python基本上,我很好奇这为什么会引发语法错误,以及如何用Python的方式来“注释掉”我未使用的代码部分,例如在调试会话期间。''' def foo(): '''does nothing''' ''' 参考方案 您可以使用三重双引号注释掉三重单引…