Get multiple request params of the same name

You can use getlist, which is similar to Django's getList but for some reason isn't mentioned in the Flask documentation:

return str(request.args.getlist('param'))

The result is:

[u'a', u'bbb']

Use request.args if the param is in the query string (as in the question), request.form if the values come from multiple form inputs with the same name. request.values combines both, but should normally be avoided for the more specific collection.


If you used $('form').serialize() in jQuery to encode your form data, you can use request.form['name'] to get data, but note that when multiple input elements' names are the same, request.form['name'] will only get the first matched item. So I checked the form object from the Flask API, and I found this. Then I checked the MultiDict object, and I found the function getlist('name').

If there are multiple inputs with the same name, try this method: request.form.getlist('name')


Another option is to use a flat json structure with request.args. Because sometimes you simply do not know the parameter beforehand and you cannot use .getlist().

arguments = request.args.to_dict(flat=False)

# Get a specific parameter
param = arguments.get('param')
print(param)

# Get all the parameters that have more than one value
for field, values in arguments.items():
    if len(values) > 1:
        print(values)