¿Cómo usar Flask-Session en Python Flask?

Sesión de matraces – 

  • Flask-Session es una extensión para Flask que admite sesiones del lado del servidor para su aplicación.
  • La sesión es el tiempo entre que el cliente inicia sesión en el servidor y cierra sesión en el servidor.
  • Los datos que deben guardarse en la sesión se almacenan en un directorio temporal en el servidor.
  • Los datos de la sesión se almacenan en la parte superior de las cookies y el servidor los firma criptográficamente.
  • Cada cliente tendrá su propia sesión donde sus propios datos serán almacenados en su sesión.

Usos de la sesión

  • Recordar a cada usuario cuando inicie sesión
  • Almacenar la configuración del sitio web específica del usuario (tema)
  • Almacenar artículos de usuario del sitio de comercio electrónico en el carrito

Este artículo asume que está familiarizado con los conceptos básicos de matraces. Pago – Flask – (Creación de la primera aplicación simple) para aprender cómo hacer una aplicación web simple en Flask.

Instalación

Instale la extensión con el siguiente comando

$ easy_install Flask-Session

Alternativamente , si tiene pip instalado

$ pip install Flask-Session

Configuración de sesión en Flask

  • La instancia de sesión no se utiliza para el acceso directo. Siempre debe usar la sesión de matraz.
  • La primera línea (sesión) del frasco es tal que cada uno de nosotros como usuario obtiene su propia versión de la sesión.

Python3

from flask import Flask, render_template, redirect, request, session
from flask_session import Session

Esto es específico solo para la biblioteca de la sesión de matraz.

  • SESSION_PERMANENT = False:   por lo tanto, esta sesión tiene un límite de tiempo predeterminado de una cantidad de minutos, horas o días después de los cuales caducará.
  • SESSION_TYPE = «filesystem»:    se almacenará en el disco duro (estos archivos se almacenan en una carpeta /flask_session en su directorio de configuración) o en cualquier cuenta ide en línea, y es una alternativa al uso de una base de datos o algo así.

Python3

app = Flask(__name__)
app.config["SESSION_PERMANENT"] = False
app.config["SESSION_TYPE"] = "filesystem"
Session(app)

Recordar usuario después de iniciar sesión

Entonces comenzaremos a hacer dos páginas básicas y su ruta llamada index.html y login.html

  • login.html contiene un formulario en el que el usuario puede completar su nombre y enviar 
  • index.html es la página principal 

Python3

@app.route("/")
def index():
    return render_template('index.html')
 
 
@app.route("/login", methods=["POST", "GET"])
def login():
    return render_template("login.html")
  • Necesitamos registrar el nombre de usuario en la sesión cuando envían el formulario.
  • Y estamos usando un diccionario en python donde «nombre» es la clave = request.form.get («nombre») es un valor

Python3

@app.route("/login", methods=["POST", "GET"])
def login():
  # if form is submited
    if request.method == "POST":
        # record the user name
        session["name"] = request.form.get("name")
        # redirect to the main page
        return redirect("/")
    return render_template("login.html")
  • Después de almacenar el nombre de usuario, debemos verificar cada vez que el usuario llega a la página de índice si existe o no alguna sesión con ese nombre de usuario.
  • Si el nombre de usuario no existe, redirija a la página de inicio de sesión.

Python3

@app.route("/")
def index():
  # check if the users exist or not
    if not session.get("name"):
        # if not there in the session then redirect to the login page
        return redirect("/login")
    return render_template('index.html')
  • Después de recordar con éxito al usuario, también necesitamos una forma de cerrar la sesión de los usuarios.
  • Entonces, cada vez que el usuario haga clic en cerrar sesión , cambie el valor del usuario a ninguno y rediríjalo a la página de índice.

Python3

@app.route("/logout")
def logout():
    session["name"] = None
    return redirect("/")

Proyecto Completo –

Python3

from flask import Flask, render_template, redirect, request, session
# The Session instance is not used for direct access, you should always use flask.session
from flask_session import Session
 
app = Flask(__name__)
app.config["SESSION_PERMANENT"] = False
app.config["SESSION_TYPE"] = "filesystem"
Session(app)
 
 
@app.route("/")
def index():
    if not session.get("name"):
        return redirect("/login")
    return render_template('index.html')
 
 
@app.route("/login", methods=["POST", "GET"])
def login():
    if request.method == "POST":
        session["name"] = request.form.get("name")
        return redirect("/")
    return render_template("login.html")
 
 
@app.route("/logout")
def logout():
    session["name"] = None
    return redirect("/")
 
 
if __name__ == "__main__":
    app.run(debug=True)

índice.html

  • También podemos usar session.name para exceder el valor de la sesión .

HTML

{% extends "layout.html" %}
 
{% block y %}
 
   {% if session.name %}
      You are Register {{ session.name }} <a href="/logout">logout</a>.
   {% else %}
      You are not Register. <a href="/login">login</a>.
   {% endif %}
 
{% endblock %}

iniciar sesión.html

HTML

{% extends "layout.html" %}
 
{% block y %}
 
   <h1> REGISTER </h1>
 
   <form action="/login" method="POST">
      <input placeholder="Name" autocomplete="off" type="text" name="name">
      <input type="submit" name="Register">
   </form>
 
{% endblock %}

diseño.html

HTML

<!DOCTYPE html>
 
<html lang="en">
    <head>
        <meta name="viewport" content="initial-scale=1, width=device-width">
        <title> flask </title>
    </head>
    <body>
        {% block y %}{% endblock %}
    </body>
</html>

Producción – 

iniciar sesión.html

índice.html

También puede ver su sesión generada.

Publicación traducida automáticamente

Artículo escrito por yameenvinchu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *