Flask Cookies
Cookie以文本文件的形式存儲(chǔ)在客戶端的計(jì)算機(jī)上沙绝。其目的是記住和跟蹤與客戶使用相關(guān)的數(shù)據(jù)恶复,以獲得更好的訪問者體驗(yàn)和網(wǎng)站統(tǒng)計(jì)信息衣迷。
Request對(duì)象包含Cookie的屬性耕渴。它是所有cookie變量及其對(duì)應(yīng)值的字典對(duì)象朽色,客戶端已傳輸邻吞。除此之外,cookie還存儲(chǔ)其網(wǎng)站的到期時(shí)間葫男,路徑和域名抱冷。
在Flask中,對(duì)響應(yīng)對(duì)象設(shè)置cookie梢褐。使用make_response()函數(shù)從視圖函數(shù)的返回值獲取響應(yīng)對(duì)象旺遮。之后,使用響應(yīng)對(duì)象的set_cookie()函數(shù)來存儲(chǔ)cookie盈咳。
讀回cookie很容易耿眉。request.cookies屬性的get()方法用于讀取cookie。
在以下Flask應(yīng)用程序中鱼响,當(dāng)您訪問'/' URL時(shí)鸣剪,會(huì)打開一個(gè)簡單的表單。
from flask import Flask,render_template,request,make_response
app = Flask(__name__)
@app.route('/')
def index():
return render_template('cookie.html')
@app.route('/setcookie', methods = ['POST','GET'])
def setcookie():
if request.method == 'POST':
user = request.form['nm']
resp = make_response(render_template('readcookie.html'))
resp.set_cookie('userID',user)
return resp
@app.route('/getcookie')
def getcookie():
name = request.cookies.get('userID')
return '<h1>welcome %s !</h1>' % name
if __name__ == '__main__':
app.run()
cookie.html頁面包含一個(gè)文本輸入丈积。
<html>
<head>
<title>cookie</title>
</head>
<body>
<form action="/setcookie" method="POST">
<p><h3>Enter userID:</h3></p>
<p><input type="text" name="nm" /></p>
<p><input type="submit" value="Login" /></p>
</form>
</body>
</html>
'readcookie.html'包含指向另一個(gè)視圖函數(shù)getcookie()的超鏈接筐骇,它讀回并在瀏覽器中顯示Cookie值。
<html>
<head>
<title>Readcookie</title>
</head>
<body>
<p><h2>Cookie "userID" is set!</h2></p>
<p><a href="/getcookie">Click here to read cookie</a> </p>
</body>
</html>
運(yùn)行應(yīng)用程序江滨,并訪問http://localhost:5000/
cookie
設(shè)置cookie的結(jié)果顯示為這樣:
setcookie
讀回cookie的輸出如下所示:
getcookie