Flask isn't getting the checkbox value
15,347
When submitting an HTML form, unchecked checkboxes do not send any data. On Flask's side, there will not be a key in form
, since no value was received. If you want to check if a single checkbox (with a unique name) is checked, just test if it's name is in form
. If you want to check which of multiple checkboxes (with the same name) are checked, use getlist
instead.
One boolean:
<input type="checkbox" name="check">
checked = 'check' in request.form
Multiple options:
<input type="checkbox" name="check" value="1">
<input type="checkbox" name="check" value="2">
<input type="checkbox" name="check" value="3">
selected = request.form.getlist('check')
any_selected = bool(selected)
Author by
Scott
Updated on June 27, 2022Comments
-
Scott almost 2 years
I am trying to print off the checkbox value in Flask when I hit the submit button.
app.py snippet:
@app.route('/test2', methods=['GET', 'POST']) def test2(): if request.method == "POST": if request.form['submit'] == 'submit': print(request.args.get('check')) return render_template('test.html')
HTML:
<div class="container"><br> <form role="form" method="post"> <input type="checkbox" name="check" value="test"> <button type="submit" name="submit" value="submit">Submit</button> </form> </div>
It returns 'None' when I hit the submit button.
I have also tried request.form.get()
@app.route('/test2', methods=['GET', 'POST']) def test2(): if request.method == "POST": if request.form['submit'] == 'submit': print(request.form.get('check')) return render_template('test.html')
That also returns 'None'.