最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

flask框架中的cookie和session使用

 更新時間:2021年01月31日 15:26:00   作者: Ly  
這篇文章主要介紹了flask框架中的cookie和session使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

文章介紹了flask框架中的cookie和session。Session是在服務(wù)器端保存的一個數(shù)據(jù)結(jié)構(gòu),用來跟蹤用戶的狀態(tài),這個數(shù)據(jù)可以保存在集群、數(shù)據(jù)庫、文件中。Cookie是客戶端保存用戶信息的一種機制,用來記錄用戶的一些信息,也是實現(xiàn)Session的一種方式。

WEB -> cookie & session

由于HTTP協(xié)議是無狀態(tài)的協(xié)議,所以服務(wù)端需要記錄用戶的狀態(tài)時,就需要用某種機制來識具體的用戶,這個機制就是Session.典型的場景比如購物車,當(dāng)你點擊下單按鈕時,由于HTTP協(xié)議無狀態(tài),所以并不知道是哪個用戶操作的,所以服務(wù)端要為特定的用戶創(chuàng)建了特定的Session,用用于標識這個用戶,并且跟蹤用戶,這樣才知道購物車里面有幾本書。這個Session是保存在服務(wù)端的,有一個唯一標識。

服務(wù)端如何識別特定的客戶?這個時候Cookie就登場了。每次HTTP請求的時候,客戶端都會發(fā)送相應(yīng)的Cookie信息到服務(wù)端。實際上大多數(shù)的應(yīng)用都是用 Cookie 來實現(xiàn)Session跟蹤的,第一次創(chuàng)建Session的時候,服務(wù)端會在HTTP協(xié)議中告訴客戶端,需要在 Cookie 里面記錄一個Session ID,以后每次請求把這個會話ID發(fā)送到服務(wù)器,我就知道你是誰了。

Cookie其實還可以用在一些方便用戶的場景下,設(shè)想你某次登陸過一個網(wǎng)站,下次登錄的時候不想再次輸入賬號了,怎么辦?這個信息可以寫到Cookie里面,訪問網(wǎng)站的時候,網(wǎng)站頁面的腳本可以讀取這個信息,就自動幫你把用戶名給填了,能夠方便一下用戶。這也是Cookie名稱的由來,給用戶的一點甜頭。

flask中的session和cookie

   flask中的session機制是將敏感數(shù)據(jù)加密后放入session,然后將session存入cookie,下次請求時,直接從瀏覽器發(fā)過來的cookie中獲取session,再從中獲取數(shù)據(jù)進行解密

   這樣操作更節(jié)省服務(wù)開銷,因為數(shù)據(jù)均存儲到客戶端

   大家可能會擔(dān)心這種做法的安全性,因為數(shù)據(jù)全部存儲在本地瀏覽器,很容易被盜取,但是安全性總是相對的,而且flask里面對session也有自己的特殊加密算法,所以也不用太過于在意安全方面的問題

Session操作

1.使用sessiom需要先導(dǎo)入session

from flask import session

2.SECRET_KEY

    一定記得要設(shè)置SECRET_KEY,用于加密數(shù)據(jù),并且如果每次啟動服務(wù)器你的秘鑰都在變化的話就不能再用之前的SECRET_KEY進行解密了,我們此處就可以將它設(shè)置成固定值,對于配置文件里面變量的設(shè)置,前文講過,如果數(shù)據(jù)量比較多就單獨在config.py里面集成,但是如果只是很微量的幾條設(shè)置,那么就可以在主文件里簡單進行指令設(shè)置即可,類似這里的:

#生成隨機的24位字符串
app.config['SECRET_KEY'] = os.urandom(24)

3.session值添加

因為session和cookie都是鍵值對形式的字典,所以直接用字典方法添加就可以了

session['username'] = 'user1'

4.session值刪除

#1.單條刪除
session.pop('username')
del session['username']
#2. 全部清除
session.clear()

5.session值獲取

session.get('username')
session['username']

6.設(shè)置過期時間(如果不設(shè)置,默認瀏覽器退出即自動結(jié)束)

#在config.py中配置session參數(shù)PERMANENT_SESSION_LIFETIME,這個值的數(shù)據(jù)類型是datetime.timedelay類型
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) 
session.permanent = True #默認為31天

在Flask中對cookie的處理

1. 設(shè)置cookie:

設(shè)置cookie,默認有效期是臨時cookie,瀏覽器關(guān)閉就失效
可以通過 max_age 設(shè)置有效期, 單位是秒

resp = make_response("success") # 設(shè)置響應(yīng)體
resp.set_cookie("Itcast_1", "python_1", max_age=3600)

2.獲取cookie

獲取cookie,通過reques.cookies的方式, 返回的是一個字典,可以獲取字典里的相應(yīng)的值

cookie_1 = request.cookies.get("Itcast_1")

3.刪除cookie

這里的刪除只是讓cookie過期,并不是直接刪除cookie

刪除cookie,通過delete_cookie()的方式, 里面是cookie的名字

resp = make_response("del success") # 設(shè)置響應(yīng)體
resp.delete_cookie("Itcast1")

示例

from flask import Flask, make_response, request
app = Flask(__name__)
@app.route("/set_cookie")
def set_cookie():
  resp = make_response("success")
  '''
    設(shè)置cookie,默認有效期是臨時cookie,瀏覽器關(guān)閉就失效
    可以通過 max_age 設(shè)置有效期, 單位是秒
  '''''
  resp.set_cookie("Itcast_1", "python_1")
  resp.set_cookie("Itcast_2", "python_2")
  resp.set_cookie("Itcast_3", "python_3", max_age=3600)
  return resp
 
@app.route("/get_cookie")
def get_cookie():
  """
    獲取cookie,通過reques.cookies的方式,
    返回的是一個字典,可以用get的方式
  """
  cookie_1 = request.cookies.get("Itcast_1") # 獲取名字為Itcast_1對應(yīng)cookie的值
  return cookie_1
 
@app.route("/delete_cookie")
def delete_cookie():
  """
    刪除cookie,通過delete_cookie()的方式,
    里面是cookie的名字
    這里的刪除只是讓cookie過期,并不是直接刪除cookie
  """
  resp = make_response("del success")
  resp.delete_cookie("Itcast1")
  return resp
 
if __name__ == '__main__':
  app.run(debug=True)

到此這篇關(guān)于flask框架中的cookie和session使用的文章就介紹到這了,更多相關(guān)flask cookie和session內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python字符串拼接的4種方法實例

    Python字符串拼接的4種方法實例

    字符串是所有編程語言中都有的基本變量的類型?,程序員基本每天都在和字符串打交道,下面這篇文章主要給大家介紹了關(guān)于Python字符串拼接的4種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • Python坐標線性插值應(yīng)用實現(xiàn)

    Python坐標線性插值應(yīng)用實現(xiàn)

    這篇文章主要介紹了Python坐標線性插值應(yīng)用實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • python 實現(xiàn)定時任務(wù)的四種方式

    python 實現(xiàn)定時任務(wù)的四種方式

    這篇文章主要介紹了python 實現(xiàn)定時任務(wù)的四種方式,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • Python打包文件執(zhí)行報錯:ModuleNotFoundError: No module named ‘pymssql‘的解決方法

    Python打包文件執(zhí)行報錯:ModuleNotFoundError: No module 

    這篇文章給大家介紹了Python打包文件執(zhí)行報錯:ModuleNotFoundError: No module named ‘pymssql‘的解決方法,如果有遇到相同問題的朋友可以參考閱讀一下本文
    2023-10-10
  • Python 爬蟲實現(xiàn)增加播客訪問量的方法實現(xiàn)

    Python 爬蟲實現(xiàn)增加播客訪問量的方法實現(xiàn)

    這篇文章主要介紹了Python 爬蟲實現(xiàn)增加播客訪問量的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Python的NumPy使用之?dāng)?shù)組過濾

    Python的NumPy使用之?dāng)?shù)組過濾

    這篇文章主要介紹了Python的NumPy使用之?dāng)?shù)組過濾,在 NumPy中,我們使用布爾索引列表來過濾數(shù)組布爾索引列表是與數(shù)組中的索引相對應(yīng)的布爾值列表,需要的朋友可以參考下
    2023-07-07
  • Python輸出帶顏色的字符串實例

    Python輸出帶顏色的字符串實例

    下面小編就為大家?guī)硪黄狿ython輸出帶顏色的字符串實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Python與MongoDB交互的代碼實現(xiàn)

    Python與MongoDB交互的代碼實現(xiàn)

    Python與MongoDB的交互通常通過pymongo庫來實現(xiàn),pymongo是一個官方的Python驅(qū)動程序,用于與MongoDB數(shù)據(jù)庫進行交互,以下是一個簡單的示例,具有一定的參考價值,需要的朋友可以參考下
    2024-10-10
  • Python實現(xiàn)中英文全文搜索的示例

    Python實現(xiàn)中英文全文搜索的示例

    這篇文章主要介紹了Python實現(xiàn)中英文全文搜索的示例,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-12-12
  • Django 設(shè)置admin后臺表和App(應(yīng)用)為中文名的操作方法

    Django 設(shè)置admin后臺表和App(應(yīng)用)為中文名的操作方法

    這篇文章主要介紹了Django 設(shè)置admin后臺表和App(應(yīng)用)為中文名的操作方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05

最新評論

工布江达县| 湖口县| 大理市| 岳阳县| 翁牛特旗| 全椒县| 镇雄县| 霍邱县| 台南市| 太原市| 普安县| 深水埗区| 玉溪市| 广南县| 南乐县| 越西县| 泸州市| 古丈县| 甘洛县| 湛江市| 安远县| 太白县| 四川省| 五常市| 南郑县| 丹江口市| 独山县| 乌海市| 泸西县| 琼中| 金山区| 北海市| 长治市| 曲阳县| 隆回县| 武平县| 盐亭县| 房产| 湖南省| 治多县| 南皮县|