一 什麼是cookie
什麼是cookie?若是單單從數據結構的角度來講,它能夠被理解成用來保存數據的一個dictionary,由一組組鍵值對組成.若是從做用上來講,咱們知道Http協議是一種無狀態的協議.什麼叫無狀態呢,就是本次的客戶端請求不會保留上一次客戶端請求的狀態,簡單點說就是這樣會要求咱們每次在瀏覽器中點開一個網站的連接都會輸一次帳戶和密碼.cookie就是用來解決這個問題的.web
爲了解決上述問題,咱們第一次登陸web服務器,服務端就會在它的響應中的Set-Cookie字段中發送一些鍵值對,這就包括一個Session ID以及其餘一些信息(也包括咱們自定義的cookie中的鍵值對),並告訴客戶端在本地緩存這個cookie.而後客戶端之後進行連接時每次都會發送這個Session ID,服務器一看是哪一個Session ID就知道是哪一個客戶端發起的連接了,就不會要求咱們再次輸帳戶和密碼驗證了.flask
咱們在flask中自定義cookie,實際上就是在響應Response的Set-Cookie字段中增長咱們自定義的鍵值對.而獲取cookie,就是經過請求Request中經過鍵獲取其對應的值.瀏覽器
二 設置cookie
經過響應對象的set_cookie方法咱們能夠設置自定義cookie:緩存
@app.route('/set_cookie')
def set_cookie():
response=make_response('Hello World');
response.set_cookie('Name','Hyman')
return response服務器
咱們還能夠指定cookie的有效時長,下面的代碼把有效時長設置成了30天.一般狀況下,咱們還能夠在瀏覽器上設置cookie的有效時長,並且瀏覽器上配置的有效時長優先級要高於咱們在代碼中設置的.
outdate=datetime.datetime.today() + datetime.timedelta(days=30)
response.set_cookie('Name','Hyman',expires=outdate)
三 獲取cookie
咱們可使用Request對象cookies字段的get方法來獲取咱們所須要的cookie,下面的代碼咱們直接獲取cookie並返回給視圖函數:cookie
@app.route('/get_cookie')
def get_cookie():
name=request.cookies.get('Name')
return name
數據結構