Ir al contenido

Sesión en Flask

Hoy vamos a ver cómo podemos manejar una sesión en Flask para poder almacenar información entre cada una de las peticiones que hagamos sobre nuestra aplicación.

Lo primero que tenemos que saber es que el objeto que gestiona la sesión en Flask es session. Por lo tanto lo primero que tenemos que hacer es importar dicho objeto de Flask.

from flask import Flask, session

Es importante saber cómo Flask gestiona las sesiones, ya que no utiliza un espacio de memoria entre cada una de las peticiones, aunque podríamos llegar a extenderlo e implementarlo, si no que lo que hace, por defecto, es crear una cookie con el contenido de la sesión.

Para poder crear la cookie y cifrar su contenido necesita una clave secreta. Definiremos la clave secreta de la siguiente forma:

app.secret_key = 'mi_clave_secreta'

Cómo podemos apreciar en el navegador aparece la cookie con los datos de la sesión cifrados.

Información de la sesión en Flask

Ahora vamos a añadir contenido a la sesión. Por ejemplo, en un primer método vamos a pintar un formulario que pida los datos al usuario y estos los guarde en memoria.

@app.route('/formulario')
def formulario():
return render_template('formulario.html')
@app.route('/guardar', methods=['POST'])
def guardar():
session['nombre'] = request.form['nombre']
session['email'] = request.form['email']
return redirect(url_for('mostrar'))

Vemos que utilizamos la siguiente estructura para guardar datos en sesión:

session['clave'] = valor

Lo siguiente será consultar esta información de la sesión de Flask y utilizar su contenido. A tal respecto hemos creado un método que pinta esta información.

@app.route('/mostrar')
def mostrar():
nombre = session['nombre']
email = session['email']
return render_template('mostrar.html', nombre=nombre, email=email)

Vemos que utilizamos la misma estructura que antes, pero sin asignación, para poder mostrar el contenido:

variable = session['clave']

Es interesante también validar que la variable existe en sesión, antes de acceder a ella. Es por ello que hemos utilizado la estructura in para realizar esta validación:

if 'nombre' in session:
nombre = session['nombre']

De esta forma ya hemos visto cómo podemos manejar la sesión en Flask.

Foto de Víctor Cuervo

Víctor Cuervo

Programador, Arquitecto IT, álter ego de Línea de Código, amante de las tecnologías, generador de conocimiento y facilitador del aprendizaje.

Descarga el código de Sesión en Flask

Descargar código