Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

817
Vistas
Lista de parámetros de consulta con Flask request.args

Estoy tratando de pasar parámetros de consulta separados por comas a un punto final Flask.

Un ejemplo de URI sería:

localhost:3031/someresource#?status=1001,1002,1003

Mirando el retorno de request.args o request.args.getlist('status') veo que solo obtengo una cadena.

 ipdb> pp request.args ImmutableMultiDict([('status', '1001,1002,1003')]) ipdb> request.args.getlist('status') ['1001,1002,1003']

Sé que puedo dividir la cadena por coma, pero eso es demasiado complicado. ¿Cuál es la forma adecuada de manejar esto en Flask? ¿O mis parámetros de consulta tienen un formato incorrecto?

Solución
Dado que Flask no admite directamente parámetros de consulta separados por comas, incluí esto en mi controlador base para admitir parámetros de consulta duplicados o separados por comas en todos los puntos finales.

 request_data = {} params = request.args.getlist('status') or request.form.getlist('status') if len(params) == 1 and ',' in params[0]: request_data['status'] = comma_separated_params_to_list(params[0])}) else: request_data['status'] = params
 def comma_separated_params_to_list(param): result = [] for val in param.split(','): if val: result.append(val) return result
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

No es raro que el diseño de la API REST tenga comas para pasar múltiples valores para la misma clave, lo que lo hace más fácil para el usuario. De todos modos, está analizando argumentos GET, analizar cadenas no es mucho más complicado. Puede optar por generar un error HTTP 400 si su cadena con comas no está bien formateada.

Algunos otros lenguajes (especialmente PHP) admiten la sintaxis de 'matriz', por lo que a veces se usa:

/request?status[]=1000&status[]=1001&status[]=1002

La getlist la variante del flask espera varias claves:

 from flask import Flask, request app = Flask(__name__) @app.route('/') def status(): first_status = request.args.get("status") statuses = request.args.getlist("status") return "First Status: '{}'\nAll Statuses: '{}'".format(first_status, statuses)
 ❯ curl "http://localhost:5000?status=5&status=7" First Status: '5' All Statuses: '['5', '7']'

No hay un estándar para esto, la forma en que se analizan/aprueban varios argumentos GET depende del idioma/marco que esté utilizando; El matraz se basa en werkzeug , por lo que permite este estilo, pero tendrás que buscarlo si te alejas del matraz.

over 4 years ago · Santiago Trujillo Denunciar

0

Esto es lo que podrías querer aquí:

 request.arg.to_dict(flat=False)

flat es True de forma predeterminada, por lo que al configurarlo en False, le permite devolver un dict con valores dentro de una lista cuando hay más de uno.

Según to_dict documentación:

 to_dict(flat=True) Return the contents as regular dict. If flat is True the returned dict will only have the first item present, if flat is False all values will be returned as lists.
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda