Form sending error, Flask
As @Blubber points out, the issue is that Flask raises an HTTP error when it fails to find a key in the args
and form
dictionaries. What Flask assumes by default is that if you are asking for a particular key and it's not there then something got left out of the request and the entire request is invalid.
There are two other good ways to deal with your situation:
Use
request.form
's.get
method:if request.form.get('add', None) == "Like": # Like happened elif request.form.get('remove', None) == "Dislike": # Dislike happened
Use the same
name
attribute for both submit elements:<input type="submit" name="action" value="Like"> <input type="submit" name="action" value="Dislike"> # and in your code if request.form["action"] == "Like": # etc.
You should be checking whether or not the 'add'
and 'remove'
keys are in the request.form
dict.
if request.method == 'POST':
if 'add' in request.form:
return redirect(url_for('index'))
elif 'remove' in request.form:
return redirect(url_for('index'))
When you click Like it doesn't fail because the first condition is met, and hence the second is never checked. But if the Dislike button is clicked, that first condition will thrown a KeyError
exception because request.form
doesn't contain a key named 'add'
.