Cesco
Cesco

Il mio blog personale

Francesco
Author

Share


Tags


Gestire i cookies in flask

FrancescoFrancesco

Allora, non è semplice da fare quanto lo sono altre cose in Flask, ma non è nemmeno ingegneria nucleare.

Cosa devo fare per leggere un cookie ?

Questa è la parte facile. Devo importare dalla libreria flask il modulo request, e poi utilizzare il metodo cookies.get("<nome del cookie>").

Facciamo un esempio. Diciamo che nel mio computer ho un cookie chiamato "mio_cookie" che contiene la stringa "Pinco pallino". Se scrivo questo:

from flask import request

@app.route("/")
def index():  
    cookie = request.cookies.get("mio_cookie")
    return "Nel cookie c'è scritto " + cookie

Ed accedo alla pagina http://localhost:5000/ flask scriverà questo:

Nel cookie c'è scritto Pinco pallino

Cosa devo fare per creare un nuovo cookie ?

Ecco, questa è la parte leggermente più complicata. Di solito quando devo visualizzare una pagina da flask utilizzo il metodo render_template per fare in modo che Flask carichi in memoria un template, lo passi a Jinja2 che lo converta e finalmente lo visualizzi sul browser del mio utente.

Ad esempio:

from flask import render_template

@app.route("/")
def index:  
    return render_template("mia_pagina.html")

In pratica mentre mando al browser dell'utente questa pagina da visualizzare, devo anche dirgli che dovrà memorizzare un cookie sul computer dell'utente. In pratica, per poterlo fare con Flask devo "dirottare" la funzione rendertemplate, facendo passare il risultato di rendertemplate, già masticato e digerito da Jinja2, attraverso il metodo make_response, in questa maniera:

from flask import render_template, make_response

@app.route("/")
def index:  
    resp = make_response(render_template("index.html"))
    return resp

Ecco... prima di restituire il valore restituito da make_response, devo dirgli di chiedere al browser web dell'utente di aggiungere un cookie. Per farlo uso questa sintassi:

resp.set_cookie("<nome del cookie>", "<valore del cookie>")  

Il codice completo per scrivere un cookie diventerà perciò il seguente:

from flask import render_template, make_response

@app.route("/")
def index:  
    resp = make_response(render_template("index.html"))
    resp.set_cookie("mio_cookie", "il valore del mio cookie")
    return resp

In questo modo l'utente che visita il mio sito Flask vedrà la pagina "index.html" processata prima da rendertemplate e poi da makeresponse, che avrà aggiunto la richiesta di memorizzare il cookie chiamato "mio_cookie" con il valore di "il valore del mio cookie".

Francesco
Author

Francesco

Comments