Guía para Obtener Parámetros GET y POST en Flask

Obtener Parámetros de una URL con el método request.args.get()

  Nota

En Flask, al crear rutas que necesitan recibir información desde la URL (como ?parametro=valor), podemos acceder a esos datos usando el método request.args.get(). Este método es sencillo y seguro, ideal para extraer parámetros sin complicaciones.

request.args.get() es un método en Flask que se utiliza para acceder a los parámetros de la consulta (query parameters) enviados en una solicitud HTTP GET

¿Cómo funciona request.args.get()?

Flask proporciona request.args, un diccionario que contiene todos los parámetros de la URL. Usando .get(), podemos acceder al valor de un parámetro específico. La sintaxis es:

python
request.args.get('nombre_del_parametro', valor_predeterminado)

nombre_del_parametro: nombre del parámetro en la URL.
valor_predeterminado (opcional): valor que devolverá si el parámetro no está en la URL.

Ejemplo Básico

Imaginemos una aplicación en Flask donde queremos capturar el parámetro usuario de la URL y saludarlo. Para esto, definimos una ruta que capture ese parámetro y lo despliegue en pantalla.

python
from flask import Flask, request

app = Flask(__name__)

@app.route('/saludo')
def saludo():
  usuario = request.args.get('usuario', 'Visitante')  
  # Salida: 'Visitante' será el valor por defecto si no se pasa el parámetro
  return f'Hola, {usuario}!'
  Explicación del Código

  • Ruta: Creamos una ruta /saludo que responderá a la URL.
  • Obtenemos el Parámetro: Con request.args.get('usuario', 'Visitante') obtenemos el valor de usuario. Si no está en la URL, usará “Visitante” como valor por defecto.
  • Retornamos una Respuesta: Con return, mostramos un mensaje personalizado en función de si se envió o no el parámetro.

Ejemplo de Uso

Llamando a http://127.0.0.1:5000/saludo?usuario=Brenda, el navegador mostrará:

python
Hola, Brenda!

Si solo visitamos http://127.0.0.1:5000/saludo (sin parámetros), veremos:

python
Hola, Visitante!

Parámetros Múltiples en Flask con request.args.get()

El método request.args.get() solo obtiene un parámetro específico. Si necesitas varios parámetros, solo usa varias llamadas.

Imaginemos una URL como esta:
python
http://127.0.0.1:8000/info?nombre=Urian&profesion=Ingeniero&edad=35

Estructura de la URL

  Nota

La URL está compuesta por la ruta /info seguida de los parámetros después del signo ?:

  • nombre=Urian
  • profesion=Ingeniero
  • edad=35

Cada parámetro es un par clave-valor, donde nombre es la clave y Urian el valor, y así sucesivamente.

Código de Ejemplo en Flask

Vamos a crear una ruta /info en Flask que obtenga estos tres parámetros:

python
from flask import Flask, request

app = Flask(__name__)

@app.route('/info')
def info():
  # Accedemos a cada parámetro de la URL usando request.args.get()
  nombre = request.args.get('nombre', 'Desconocido')
  profesion = request.args.get('profesion', 'Sin especificar')
  edad = request.args.get('edad', 'N/A')

  # Devolvemos una respuesta con los valores capturados
  return f'Nombre: {nombre}, Profesión: {profesion}, Edad: {edad}'


# Corriendo la app 
if __name__ == '__main__':
  app.run(debug=True, port=5000)
  Explicación

  1. Acceso a los Parámetros: Usamos request.args.get('nombre', 'Desconocido'), request.args.get('profesion', 'Sin especificar'), y request.args.get('edad', 'N/A') para obtener cada parámetro individualmente. Cada llamada:
    • Toma el nombre del parámetro que quieres obtener.
    • Si el parámetro no está en la URL, usa el valor predeterminado que especificamos.
  2. Respuesta: Mostramos los valores recibidos en la respuesta.

Resultado

Si visitamos la URL http://127.0.0.1:8000/info?nombre=Urian&profesion=Ingeniero&edad=35, la salida será:

python
Nombre: Urian, Profesión: Ingeniero, Edad: 35

Si no incluyes algún parámetro, el valor predeterminado se usará en su lugar. Por ejemplo, en la URL http://127.0.0.1:8000/info?nombre=Urian&profesion=Ingeniero (sin edad), el resultado será:

python
Nombre: Urian, Profesión: Ingeniero, Edad: N/A
  Conclusión

request.args.get() permite obtener valores individuales de la URL. Cuando necesitas múltiples parámetros, simplemente realiza varias llamadas a request.args.get() con el nombre de cada parámetro. Esto hace que sea fácil y flexible construir rutas dinámicas en Flask que respondan a la información que los usuarios envían en la URL.