Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

822
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!