Search code examples
pythonflaskrequest.form

Python Flask request.form not working


I have a question about Python. I am trying to get multiple buttons in one form, but it isn't working out.

I have tried using if 'elem' in request.form, but that isn't working, because the submit's doesn't go in request.form. You have any idea how it comes?

I have already tried solving it with this: Flask Python Buttons But that didn't work out. Google isn't working for me aswell, hence why trying it on here.

Python code:

@app.route('/option_new_sender/', methods = ['GET','POST'])
def option_new_sender():
# Add selected elements to session['added_elements']
if 'add_elem' in request.form:
    return 'a'
# Delete Selected elements from session['added_elems']
elif 'remove_elem' in request.form:
    return 'b'
# Reset verwijderd session['added_elems']
elif 'reset' in request.form:
    return 'c'
# Verzend form en voegt toe aan 'entries_plot_list
elif 'send_form' in request.form:
    return 'd'
else:
    return 'e'

HTML code:

<form action={{url_for("option_new_sender")}} method="POST">
<h2>Een nieuwe grafiek toevoegen</h2>
Titel: <input type="text" name="title" value={{title}}><br/>
Perc: <input type="text" name="perc" value={{perc}}><br/>
<select name = "added_elems" multiple size="5">
    {% for elem in elems %}
        <option value = "{{elem}}">{{elem}}</option>
    {% endfor %}
</select>
<button type= "submit" value = "remove_elem">Remove element</button>
</br></br>
Element: 
<select name = "elem" multiple size = "5">
    {% for elem in all_elems %} 
        <option value = "{{elem}}">{{elem}}</option>
    {% endfor %}
</select>
<button type="submit" value = "add_elem">Add element</button>
<button type="submit" value = "send_form">Verzenden</button>
<button type="submit" value = "reset">Reset</button>
</form>

It doesn't matter what I try, for some reason the Submit always ends at 'e'. Thank you in advance!


Solution

  • For any element to be submitted in the HTTP POST, it needs to have a name attribute. Your buttons don't, so you need to add them.

    <button type="submit" name="add_elem" value="add">Add element</button>