當前位置:網站首頁>flask入門教程(7) - 會話
flask入門教程(7) - 會話
2022-01-27 19:33:01 【Ejasmine】
會話
flask提供了session對象,即會話。允許你在不同請求之間儲存信息。這個對象相當於用密鑰簽名加密的cookie,即用戶可以查看你的cookie,但是如果沒有密鑰就無法修改它:
這是我的網站詞神上的cookie,大家可以打開我的網站進行查看。
使用會話之前你必須設置一個密鑰。這之前我們就講解過,所以這裏直接跳過,上代碼:
import os
from flask import Flask, render_template, session
app = Flask(__name__)
app.config["SECRET_KEY"] = os.urandom(24)
@app.route("/")
def index():
if not session.get("name"):
session["name"] = "pynickle"
return render_template("index.html")
if __name__ == "__main__":
app.run(port=5050, debug=True)
注意,session.get函數用於獲取session中的值,如果不存在會返回None而不是報錯。
打開網站,查看cookie:
可以看見我們的session,已經被加密過了。
持久性
session是由持久性的,正常session在瀏覽器關閉後删除,那麼如何讓session保留更長時間呢,這時候就需要我們的permanent屬性:
session.permanent = True
這樣的話會使用配置中的PERMANENT_SESSION_LIFETIME作為session的持續時間。這個配置是一個datetime.timedelta對象,具體timedelta的介紹可以看這裏:datetime.timedelta
以下我們用一個例子說明這個過期時間,下面是業餘內容,能看就看,不强求:
import os
from datetime import timedelta
import time
from flask import Flask, render_template, session, jsonify
app = Flask(__name__)
app.config["SECRET_KEY"] = os.urandom(24)
app.config["PERMANENT_SESSION_LIFETIME"] = timedelta(seconds=5)
@app.before_first_request
def before_first_request():
print("before first request")
session.permanent = True
@app.route("/")
def index():
if not session.get("name"):
session["name"] = "pynickle"
print(session.get("name"))
return render_template("index.html")
@app.route("/get")
def get_session():
return jsonify(session.get("name"))
if __name__ == "__main__":
app.run(port=5050, debug=True)
jsonify函數是用來json化的,before_first_request裝飾器則是在app第一次請求前執行,首先訪問首頁,session存儲成功,接著立刻訪問get頁面,你應該能看到pynickle,過個10多秒,刷新,這時候你就能看到null,也就是到過期時間了,删除了。
下次見!
版權聲明
本文為[Ejasmine]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201271933007298.html
邊欄推薦
猜你喜歡
隨機推薦
- uniapp上傳圖片及組件傳值
- 瑞利年金險資金保障安全嗎?收益高不高啊?
- 華為手機USB連不上電腦的解决方法
- Flutter 2,移動金融應用開發
- 關於st25系列NFC標簽簡單介紹及st25TV系列用於門禁讀取時的注意事項總結
- 關於用ffmpeg轉手機視頻發現視頻長寬倒了的問題
- 函數 / 類模板--模板2
- 數組中的第k個最大的元素--優先級隊列、排序、堆、排序
- 單片機實例27——ADC0809A/D轉換器基本應用技術(硬件電路圖+匯編程序+C語言程序)
- Collection集合的學習
- 一場面試結束,某度員工從事Android 5年為何還是初級工程師?
- 3本書閱讀筆記【人月神話-Go語言實戰-研發能力持續成長路線】01
- PHP垃圾回收機制
- 【電子技術】什麼是LFSR?
- 死鎖?如何定比特到死鎖?如何修複死鎖?(jps和jstack兩個工具)
- 快樂寒假 22/01/20
- image
- 噴程序員?SURE?
- LDO分壓電阻計算小工具
- 面試之求一串字符串中每個字符的出現次數
- 【ISO15765_UDS&OBD診斷】-01-概述
- 【Mysql上分之路】第九篇:Mysql存儲引擎
- RHCE 第一次作業
- 2021.10.16我的第一篇博客:一切皆有可能!
- CTA-敏感行為-讀取IMEI
- 面試被問怎麼排查平時遇到的系統CPU飆高和頻繁GC,該怎麼回答?
- nuxt項目總結-綜合
- 自然語言處理學習筆記(一)
- C語言第一課
- 各比特大佬,Spark的重點難點系列暫時更新完畢
- 基於 esbuild 的 universal bundler 設計
- XCTFre逆向(四):insanity
- 理解什麼是真正的並發數
- JVM腦圖
- 【Pytorch(四)】學習如何使用 PyTorch 讀取並處理數據集
- 函數棧幀的創建與銷毀
- 構建神經網絡- 手寫字體識別案例
- 多模態生成模型ERNIE-VILG
- kotlin不容忽視的小細節
- 備戰一年,終於斬獲騰訊T3,我堅信成功是可以複制的