Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Cookies Python: Desarrollo web con Flask

En esta lección vamos a explorar las cookies en aplicaciones web. Veremos qué son, para qué sirven y cómo usarlas en Flask.

Lo haremos de forma práctica y sencilla, como si estuviéramos charlando entre amigos. Si ya llevas un tiempo con Python y Flask, este tema será perfecto para ti.


¿Qué son las Cookies?

Imaginemos que entras a una tienda en línea y agregas productos a tu carrito. Luego cierras la página y al volver… ¡tu carrito sigue ahí! Eso sucede gracias a algo llamado cookies.

🍪 Las cookies (o galletas si lo tradujéramos literalmente) son pequeños fragmentos de información que el servidor le pide al navegador del usuario que guarde.

Estas cookies se guardan como pares de clave y valor, como por ejemplo:

Clave Valor
carrito ["camisa", "pantalón"]
usuario_id 38

Cada vez que se hace una nueva solicitud a ese servidor, el navegador le manda estas cookies para que el servidor recuerde quién eres y qué hacías.

Esto es importante porque HTTP, el protocolo que usan los navegadores para comunicarse con los servidores, no guarda ningún estado entre petición y petición. Es decir, cada vez que haces clic o cargas algo, es como si llegaras desde cero, y las cookies ayudan a mantener esa continuidad entre tus visitas.


¿Para qué se usan las Cookies?

En una web real, las cookies se usan para cosas como:

🍪 Recordar que ya iniciaste sesión.

🍪 Guardar los productos que agregaste al carrito de compras.

🍪 Personalizar la experiencia del usuario.

🍪 Y sí… también para mostrarte publicidad relacionada con lo que buscaste hace poco (gracias, Google).


Cómo trabajar con Cookies en Flask

Ahora sí, pasemos a la práctica. Flask nos da unas herramientas muy fáciles de usar para trabajar con cookies. Vamos a ver cómo leer las cookies que llegan del navegador y cómo enviar nuevas cookies desde el servidor.

Cómo leer cookies con request.cookies

Cuando un usuario hace una solicitud, podemos acceder a sus cookies usando request.cookies, que funciona como un diccionario:

from flask import Flask, request

app = Flask(__name__)

@app.route("/get_cookies")
def get_cookies():
    # Extrae la cookie con clave 'foo'
    foo = request.cookies.get("foo")  # Si no existe, devuelve None
    print("cookies = ", foo)
    return f"La cookie 'foo' vale: {foo}"

Este ejemplo busca una cookie llamada foo y la imprime en la consola.

Para enviar cookies al navegador, Flask usa el método set_cookie() sobre el objeto response. Veamos:

from flask import Flask, make_response

app = Flask(__name__)

@app.route("/set_cookies")
def set_cookies():
    # Creamos la respuesta personalizada
    response = make_response("Cookie 'foo' fue creada.")

    # Agregamos una cookie con nombre 'foo' y valor 'the bar'
    response.set_cookie("foo", "the bar")

    return response

Una vez que abras la ruta /set_cookies, se enviará una cookie al navegador y estará disponible para futuras visitas.


Caso práctico: carrito de compras

Un ejemplo muy útil donde se aplican las cookies es en un carrito de compras. Imagina una app donde el usuario va agregando productos uno a uno. Vamos a guardar esos productos directamente dentro de una cookie llamada "cart".

Primero, importamos las librerías necesarias:

from flask import Flask, make_response, request, redirect
import json

app = Flask(__name__)

Ahora el código para agregar un nuevo producto a la cookie del carrito:

@app.route('/cart-items')
def cart_items():
    # Obtenemos el producto desde la URL, ej: /cart-items?item=camisa
    item = request.args.get('item')

    # Leemos la cookie 'cart', si no existe usamos una lista vacía
    cart = json.loads(request.cookies.get('cart', json.dumps([])))

    # Agregamos el nuevo producto al carrito
    cart.append(item)

    # Volvemos a codificar la lista a formato string JSON
    encoded_cart = json.dumps(cart)

    # Creamos la respuesta y guardamos la nueva cookie
    response = make_response(redirect('/'))  # Redirigimos a otra ruta
    response.set_cookie('cart', encoded_cart)

    return response

¿Qué está pasando aquí?

  1. Usamos request.args.get() para leer el producto enviado por URL.
  2. Leemos la cookie cart y la decodificamos desde una cadena JSON a lista de Python.
  3. Agregamos el nuevo producto a la lista.
  4. Volvemos a codificar esa lista a una cadena JSON.
  5. Finalmente, guardamos esta cadena como cookie usando set_cookie.

Así, el carrito del usuario queda guardado cada vez que agrega algo.


Datos importantes sobre las Cookies

Característica Detalles
Tamaño máximo Aproximadamente 4 KB
Almacenamiento Se guardan en el navegador del cliente
Seguridad Los datos pueden ser leídos fácilmente si no se cifran
Codificación Solo puedes guardar texto; estructuras complejas deben codificarse (como JSON)

En general, si necesitas guardar más datos o datos sensibles, es mejor usar sesiones, algo que veremos en la próxima lección.


Resumen

  • Las cookies permiten recordar información del usuario entre diferentes peticiones (como si iniciamos sesión o llevamos productos en un carrito).
  • En Flask, puedes:
    • Leer cookies con request.cookies.get("clave").
    • Enviar cookies con response.set_cookie("clave", "valor").
  • Las cookies solo permiten guardar datos pequeños (máximo unos 4 KB).
  • Para datos más complejos (como listas o diccionarios), puedes usar json.dumps() y json.loads() para convertirlos a texto.
  • Las cookies no son seguras por sí solas, por lo cual no debes guardar información sensible en ellas sin cifrar.

Nos vemos en la siguiente lección, donde aprenderemos a trabajar con sesiones, una alternativa segura y flexible para manejar información del usuario.


Materiales adicionales

  1. Documentación oficial
  2. Parámetros adicionales para establecer cookies en el objeto Response

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY