Skip to content Skip to sidebar Skip to footer

Getting Form Data With Flask

When getting from data in Flask, can I somehow bind html elements and their values to an object without using Jinja templating. Or do I have to send the data via a manual HTTP Pos

Solution 1:

I think what you are really asking is "given a client-side JavaScript object, how can I serialize it so that I can easily access the data server-side". If that is your question, there are two ways to do so:

  1. The way you provided in your answer, serializing your object as JSON and submitting it as the body of your POST request:

    @app.route("/user", methods=("POST",))defsave_user():
        data = request.get_json()
        # ... etc. ...
  2. Using FormData on the client side:

    var yourUser = {
        firstname: "Joe",
        lastname: "Smith",
        email: "joe@smith.com",
        password: "12345"
    };
    
    var formData = new FormData();
    Object.keys(yourUser).forEach(function(key) {
        formData.append(key, yourUser[key]);
    });
    // Post formData back to your controller using XHR

    combined with the normal request.form access on the server side:

    @app.route("/user", methods=("POST",))defsave_user():
        data = request.form
        # ... etc. ...

Solution 2:

Solve the issue with this

@app.route('/post/user',methods=['POST','GET'])
def saveuser():
 data = json.loads(request.data)
 firstname = data['firstname']
 newuser = User(firstname,lastname,email,password)

 db.session.add(newuser)
 db.session.commit()

first I get the json string from request.data, then i parse it into a dict and save it to my db

Post a Comment for "Getting Form Data With Flask"