flask handle form with radio buttons
Asked Answered
S

4

33

My index.html looks like this

<form name="myForm" action="" method="post" onsubmit="">
<p>
<input type="radio" name="options" id="option1"> Option1 <br>
<input type="radio" name="options" id="option2"> Option2 <br>
<input type="radio" name="options" id="option3"> Option3 <br>
</p>
<p><input type=submit value=Next></p>
</form>

I need to get the selected button. But since they all have the same name I cannot do it by writing request.form['option']. If I make their names different, users can make multiple selections.

Isn't there a way to get a button's state by it's id ? If no, what's the simplest way to handle this form ?

Stela answered 27/7, 2015 at 20:29 Comment(0)
S
66

You should add the value attribute to each of your input fields:

<input type="radio" name="options" id="option1" value="option1"> Option1 </input><br>
<input type="radio" name="options" id="option2" value="option2"> Option2 </input><br>
<input type="radio" name="options" id="option3" value="option3"> Option3 </input><br>

and in your flask route you can read the selected option:

option = request.form['options']

and you'll get the value of the selected radio button.

Schreib answered 27/7, 2015 at 21:13 Comment(2)
I am getting this 400 Bad Request: KeyError:Salena
@Sarthak You need to place your buttons under the same HTML form tag as your submit button is.Amalburga
M
8

or an alternative and simple method is to use

getlist()

<input type="radio" name="options" id="option1" value="option1"> Option1 </input<br>
<input type="radio" name="options" id="option2" value="option2"> Option2 </input<br>
<input type="radio" name="options" id="option3" value="option3"> Option3 </input<br>

then to get value selected, in your flask file:

option = request.form.getlist('options')

nb: you can select more or one value it will be saved in a list

Mccullers answered 17/6, 2020 at 4:35 Comment(0)
R
4

To anyone getting a 400 Bad Request: Key Error type-error, try one of the following:

  • Ensure that you are requiring the client to choose an radio option
  • Employ a try/except[/else/final] statement to handle cases where the client does not choose an option, and you don't require them to choose one

I'd respond to @sarthak 's comment but I don't have enough reputation for that.

Rann answered 5/1, 2021 at 16:0 Comment(0)
T
-2

400 bad request error can come if server is not able to find an element that is named as options

Timtima answered 4/3, 2023 at 2:6 Comment(1)
As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.Simmonds

© 2022 - 2024 — McMap. All rights reserved.