English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Gestione dei cookie Flask

I cookie vengono memorizzati sotto forma di file di testo sul computer del client. Lo scopo è ricordare e tracciare i dati relativi all'uso del cliente per ottenere una migliore esperienza di accesso e statistiche del sito.

L'oggetto Request contiene un attributo cookie. È un oggetto dizionario che contiene tutte le variabili cookie e i loro corrispondenti valori, inviati dal client. Oltre a questo, il cookie memorizza anche la data di scadenza, il percorso e il dominio del sito.

In Flask, i cookies vengono impostati sull'oggetto di risposta. Usa la funzione make_response() per ottenere l'oggetto di risposta dal valore di ritorno della funzione di vista. Poi, usa la funzione set_cookie() dell'oggetto di risposta per memorizzare il cookie.

Rileggere un cookie è facile. Puoi usare il metodo get() dell'attributo request.cookies per leggere il cookie.

Nell'applicazione Flask qui sotto, quando si accede all'URL => /, viene aperto un modulo semplice.

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: it.oldtoolbag.com
# Date: 2020-08-08
@app.route('/')
 def index():
     return render_template('index.html')

Questa pagina HTML contiene un campo di testo, il codice completo è come segue -

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: it.oldtoolbag.com
# Date: 2020-08-08
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Esempio di Cookies Flask</title>
 </head>
    <body>
       <form action="/setcookie" method="POST">
          <p><h3>Inserisci userID</h3></p>
          <p><input type='text' name='name'/></p>
          <p><input type='submit' value='登录'/></p>
       </form>
    </body>
 </html>

表单提交到URL => /setcookie。 关联的视图函数设置一个Cookie名称为:userID,并在另一个页面中呈现。

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: it.oldtoolbag.com
# Date: 2020-08-08
@app.route('/setcookie', methods=['POST', 'GET'])
 def setcookie():
    if request.method == 'POST':
         user = request.form['name']
         resp = make_response(render_template('readcookie.html'))
         resp.set_cookie('userID', user)
         return resp

readcookie.html 包含超链接到另一个函数getcookie()的视图,该函数读回并在浏览器中显示cookie值。

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: it.oldtoolbag.com
# Date: 2020-08-08
@app.route('/getcookie')
 def getcookie():
     name = request.cookies.get('userID')
     return '<h1>welcome '+name+'</h1>'

完整的应用程序代码如下 -

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: it.oldtoolbag.com
# Date: 2020-08-08
from flask import Flask
 from flask import render_template
 from flask import request
 from flask import make_response
 app = Flask(__name__)
 @app.route('/')
 def index():
     return render_template('index.html')
 @app.route('/setcookie', methods=['POST', 'GET'])
 def setcookie():
     if request.method == 'POST':
         user = request.form['name']
         resp = make_response(render_template('readcookie.html'))
         resp.set_cookie('userID', user)
         return resp
 @app.route('/getcookie')
 def getcookie():
     name = request.cookies.get('userID')
     print (name)
     return '<h1>welcome, '+name+'</h1>'
 if __name__ == '__main__':
     app.run(debug=True)

Esegui l'applicazione e accedi all'URL => http://localhost:5000/setcookie e il risultato della configurazione dei cookie è il seguente -

L'output del cookie riletto è il seguente -