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 ?

theluckyemil
  • 663
  • 1
  • 7
  • 16

4 Answers4

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.

doru
  • 9,022
  • 2
  • 33
  • 43
7

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

fredcode
  • 71
  • 1
  • 1
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.

-2

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

  • 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](/help/how-to-answer). – Community Mar 08 '23 at 19:30