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