Cómo agregar más de un elemento a la sesión en Flask mediante arrays

- Andrés Cruz

In english

En Flask, la sesión es una forma de almacenar datos que se asocian con un usuario durante el uso de la aplicación, usualmente se relaciona el uso de la sesion con un usuario autnetiado, pero, el usuario tambien puede usar la sesión sin necesidad de estar autenticado. Por ejemplo, si un usuario inicia sesión en una aplicación web Flask, se puede crear una sesión para manejar los datos básicos de este usuario, como sería su nombre, email e indenrificador, entre otras preferencias.

Flask proporciona una forma fácil de trabajar con la sesión a través del objeto session, que es un objeto de Python que se almacena en cookies en el navegador del usuario. 

Para utilizar la sesión en Flask se pueden utilizar funciones como session.get() y session.pop() para leer y escribir datos en la sesión, respectivamente.

El uso de la sesión es muy sencillo en Flask y veremos cómo podemos guardar más que simplemente texto, números o similares:

session['age'] = 30
session['name'] = "Andres"

Antes que nada, recuerda que podemos importarlo internamente de Flask:

from flask import session

Y definimos un par de funciones, para agregar y remover elementos de un array, en este caso:

def addRoomSession(room):
    if 'rooms' not in session:
        session['rooms'] = []
    
    rooms = session['rooms']
    rooms.append(room)
    session['rooms'] = rooms
    print(session['rooms'])
def removeRoomSession(room):
    if 'rooms' not in session:
        return
    
    rooms = session['rooms']
    rooms.remove(room)
    session['rooms'] = rooms

La idea es notar que podemos guardar arrays dentro de la sesión:

rooms = session['rooms']  # obtenemos la sesion, la key que queremos modificar
rooms.append(room)        # agregamos nuestros elementos
session['rooms'] = rooms  # la establecemos nuevamente en la sesion

Este código forma parte de mi curso completo sobre Flask, en el cual vemos como trabajar con Flask Socket IO y las habitaciones o rooms.

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy