Home > Back-end >  How do I POST boolean data to Flask route
How do I POST boolean data to Flask route

Time:12-26

I want to pass a variable called manual to Flask a route, which will then do something based on the value in the POST form data. But the forms data is interpreted as string in flask even though I send it in a form as a dictionary.

here's the code

@app.route("/result", methods= [ 'POST', 'GET'])
def result():
    manual = request.form.get("manual")
    if manual is None:
            return "manual is required"

here's how I am sending the data

r = requests.get('http://127.0.0.1:5000/result'
                 ,data={manual':False})

I understand that I can do something like;

if manual == 'True'

but I don't want to be comparing strings, I want to do it in the standard way whichever it is.

Thanks

CodePudding user response:

First of all, do a POST request, not a GET:

r = requests.post('http://127.0.0.1:5000/result', json={'manual': False})

Then (untested):

@app.route("/result", methods=['POST'])
def result():
    json_data = flask.request.json
    manual = json_data.get("manual")
    if manual is None:
            return "manual is required"

Have a look at the doc for details: More complicated POST requests.

Note that there are differences between using the data parameter and the json parameter. An important thing to note is the presence of the Content-Type header:

Using the json parameter in the request will change the Content-Type in the header to application/json.

  • Related