Sesión en Flask

06/Oct/2016 Python ,

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.

Objeto Flask Session

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

  1. from flask import Flask, session

Objeto Flask Session y las cookies

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:

  1. app.secret_key = 'esto-es-una-clave-muy-secreta'

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

Flask Session

Acceso a Flask Session

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.

  1. @app.route('/saludo',methods=['POST'])
  2. def saludo():
  3. nombre = request.form['nombre']
  4. apellido = request.form['apellido']
  5. session['nombre'] = nombre
  6. session['apellido'] = apellido
  7. return 'Hola ' + nombre + ' ' + apellido

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

  1. session['nombre_variable'] = 'valor'

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

  1. @app.route('/datos-sesion',methods=['GET'])
  2. def datos_sesion():
  3. if 'nombre' in session:
  4. nombre = session['nombre']
  5. else:
  6. nombre = ''
  7.  
  8. if 'apellido' in session:
  9. apellido = session['apellido']
  10. else:
  11. apellido = ''
  12.  
  13. return 'Datos Sesion: ' + nombre + ' ' + apellido

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

  1. session['nombre_variable']

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.

  1. if 'nombre' in session:
  2. nombre = session['nombre']

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

Vídeos sobre Flask


Difunde el Conocimiento

Si te ha gustado el artículo o te ha sido de utilidad, no dejes de compartirlo con tus amigos en las redes sociales... Te estaremos muy agradecidos. :-D