python get form data how can this be?

14,084

The data is in the field request.form, and can be fetched by:

name = request.form['name']
phone = request.form['phone']

Remark. If they are not sent with, this code will throw an exception.

Longer explanation The reason is that the data is sent using a encoding known as application/x-www-form-urlencoded. The data is in request.data field, but to decode it you can use request.form, and Flask will automatically decode it as application/x-www-form-urlencoded.

Share:
14,084
user2950593
Author by

user2950593

Updated on November 28, 2022

Comments

  • user2950593
    user2950593 over 1 year

    This is my js function for ajax form submit:

    $('.sendButton').on('click', function(){
        $.post( "/send-form", $('#contactForm').serialize())
    }
    

    This is my form:

    <form id="contactForm">
        <input id="fastName" name="name" type="text" />
        <input id="fastPhone" name="phone" type="text" />
        <div class="sendButton">send</div>
    </form>
    

    And this is my backend function to handle it, I am using python, flask

    @app.route("/send-form", methods=['POST'])
    def send_form():
        data = request.data   
        print request.data
    

    And in my console it prints data:

    127.0.0.1 - - [22/Feb/2015 23:50:54] "POST /send-form HTTP/1.1" 200 - name=dfdsf&phone=89920203725
    

    But I did the same in another project and it prints nothing. Details are here: Can't get post ajax request data python How can this be possible?