Obtener múltiples parámetros de solicitud del mismo nombre

Mi problema es que con el código dado:

from flask import Flask, request app = Flask(__name__) @app.route("/") def hello(): return str(request.values.get("param", "None")) app.run(debug=True) 

y yo visito:

 http://localhost:5000/?param=a&param=bbb 

Debería esperar una salida de [‘a’, ‘bbb’], excepto que Flask parece aceptar solo el primer parámetro e ignorar el rest.

¿Es esta una limitación de matraz? ¿O es por diseño?

Puede usar getlist , que es similar a getList de Django, pero por alguna razón no se menciona en la documentación del Flask:

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

El resultado es:

 [u'a', u'bbb'] 

Use request.args si el parámetro está en la cadena de consulta (como en la pregunta), request.form si los valores provienen de varias entradas de formulario con el mismo nombre. request.values combina ambos, pero normalmente debe evitarse para la colección más específica.

Si usó $('form').serialize() en jQuery para codificar los datos de su formulario, puede usar request.form['name'] para obtener datos, pero cuando los nombres de varios elementos de entrada son iguales, request.form['name'] solo obtendrá el primer elemento coincidente. Así que verifiqué el objeto de formulario de la API de Flask, y encontré esto . Luego verifiqué el objeto MultiDict y encontré la función getlist('name') .

Si hay varias entradas con el mismo nombre, pruebe este método: request.form.getlist['name']

Una forma más es que puede usar una clave y un valor que contienen varios valores y luego, en el servidor, puede dividir y hacer lo que quiera. Esperamos que esto ayude a alguien más

 http://localhost/api/products/filters?Manufacturer=Dell|HP|HUAWEI|Lenovo 

O

 http://localhost/api/products/filters?Manufacturer=Dell_HP_HUAWEI_Lenovo 

O

 http://localhost/api/products/filters?Manufacturer=Dell__HP__HUAWEI__Lenovo