第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Flask 操作 Session

上一個小節(jié)我們講解了如何使用 Flask 框架操作 Cookie,作為和 Cookie 相輔相成的 Session,F(xiàn)lask 框架也對其做了很好的支持,這節(jié)課我們就來學(xué)習(xí)下如何使用 Flask 框架操作 Session。和 Cookie 的操作差不多,對 Session 的操作同樣有 設(shè)置、獲取、刪除等等。

1. 程序簡介

1.1 程序功能和結(jié)構(gòu)

完成一個 Flask 程序,提供操作 Session 的 4 項功能,如下表所示:

頁面路徑 功能
/set 在 Session 中存儲一個名稱為 ‘user’、值為 ‘tom’ 的變量
/get 獲取 Session 中名稱為 ‘user’ 的變量
/del 刪除 Session 中名稱為 ‘user’ 的變量
/clear 清除 Session 中所有的變量

程序有 2 個源文件構(gòu)成:

源文件 描述
app.py Flask 后端程序,提供操作 Session 的接口
templates/query.html 查詢 Session 中名稱為 ‘user’ 的變量,并返回給客戶端

1.2 源程序下載

2. 頁面模板 query.html

用戶的數(shù)據(jù)存儲在 Session 中,服務(wù)端程序使用頁面模板 query.html 展示 Session 中的數(shù)據(jù),代碼如下:

<html>
<head>
<meta charset='UTF-8'>
<title>顯示 session 中的變量</title>
</head>

<body>
<h1>顯示 session 中的變量</h1>
<h2>session.get('user') = {{ user }}</h2>
</body>

</html>

在 Session 中存儲了一個名稱為 ‘user’ 的變量,頁面模板顯示該變量的值。

3. 后端程序 app.py

服務(wù)端程序 app.py 提供操作 Session 的功能,程序代碼分為如下部分:

3.1 引入模塊

#!/usr/bin/python3
from flask import Flask, session, render_template
import os

app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)

Flask 程序中有個配置屬性叫做 SECRET_KEY,SECRET_KEY 是一個密鑰,F(xiàn)lask 以及相關(guān)的擴展 extension 需要進行加密時需要使用到這個密鑰,使用 Session 存儲數(shù)據(jù)時,F(xiàn)lask 在內(nèi)部需要進行加密處理。

初始化 Flask 應(yīng)用對象后,配置 SECRET_KEY。函數(shù) os.urandom (24) 生成一個包含 24 個字符的隨機字符串,這個字符串被作為 SECRET_KEY。

3.2 返回給瀏覽器的內(nèi)容

def query(): 
    user = session.get('user')
    return render_template('query.html', user = user)

query 函數(shù)從 Session 中獲取名稱為 ‘user’ 的變量,將值作為參數(shù)傳遞給頁面模板 query.html,服務(wù)端渲染后生成包含有 Session 變量的值內(nèi)容,返回給瀏覽器。

Flask 程序?qū)?Sesion 進行設(shè)置、修改、刪除的操作后,最后調(diào)用 query () 函數(shù)將 Session 中包含的變量的值返回給瀏覽器。

注意:可以通過 session [‘user’] 的方法獲取名稱為 ‘user’ 的變量的值,兩者的區(qū)別在于

  • 如果變量 user 不存在,session [‘user’] 會拋出異常
  • 如果變量 user 不存在,session.get (‘user’) 返回 None,不會拋出異常

3.3 設(shè)置 Session 中的變量

@app.route('/set')
def set():
    session['user'] = 'tom'
    return query()

設(shè)置頁面路徑 /set 的處理函數(shù)為 set,函數(shù) set () 在 Session 中設(shè)置名稱為 ‘user’ 的變量的值為 ‘tom’,最后調(diào)用 query () 函數(shù)返回 Session 中變量的值給瀏覽器。

3.4 獲取 Session 中的變量

@app.route('/get')
def get():
    return query()

設(shè)置頁面路徑 /get 的處理函數(shù)為 get,函數(shù) get 調(diào)用函數(shù) query 返回 Session 中變量的值給瀏覽器。

3.5 刪除 Session 中的變量

@app.route('/del')
def delete():
    session.pop('user')
    return query()

設(shè)置頁面路徑 /del 的處理函數(shù)為 del,函數(shù) del 使用 session.pop (‘user’) 在 Session 中刪除名稱為 ‘user’ 的變量,最后調(diào)用函數(shù) query 返回 Session 中變量的值給瀏覽器。

3.6 清空 Session 中全部的變量

@app.route('/clear')
def clear():
    session.clear()
    return query()

if __name__ == '__main__':
    app.run(debug=True)

設(shè)置頁面路徑 /set 的處理函數(shù)為 clear,函數(shù) clear 使用 session.clear () 刪除 Session 中所有的變量,最后調(diào)用函數(shù) query 返回 Session 中變量的值給瀏覽器。

4. 運行程序

圖片描述

初始化的狀態(tài)下,Session 為空,因此變量 user 的值為空。

圖片描述

在頁面 /set 的處理函數(shù)中,設(shè)置 Session 中名稱為 ‘user’ 的變量值為 ‘tom’,設(shè)置成功后,顯示名稱為 ‘user’ 的變量的值為 ‘tom’。

3. 在瀏覽器器中輸入 http://localhost:5000/del,顯示如下:

圖片描述

在頁面 /del 的處理函數(shù)中,刪除 Session 中名稱為 ‘user’ 的變量,刪除后,顯示名稱為 ‘user’ 的變量的值為空。

圖片描述

在頁面 /clear 的處理函數(shù)中,刪除 Session 中所有的變量,刪除后,顯示名稱為 ‘user’ 的變量的值為空。

5. 小結(jié)

本節(jié)講解在 Flask 中如何操作 Session,使用思維導(dǎo)圖概括如下:

圖片描述