Flask Session 會(huì)話(huà)

與Cookie不同,會(huì)話(huà)數(shù)據(jù)存儲(chǔ)在服務(wù)器上。 會(huì)話(huà)是客戶(hù)端登錄到服務(wù)器并注銷(xiāo)的時(shí)間間隔。 需要在此會(huì)話(huà)中進(jìn)行的數(shù)據(jù)存儲(chǔ)在服務(wù)器上的臨時(shí)目錄中。

與每個(gè)客戶(hù)端的會(huì)話(huà)分配一個(gè)會(huì)話(huà)ID。 會(huì)話(huà)數(shù)據(jù)存儲(chǔ)在cookie頂部,服務(wù)器以加密方式簽名。 對(duì)于這種加密,F(xiàn)lask應(yīng)用程序需要一個(gè)定義SECRET_KEY。

會(huì)話(huà)對(duì)象也是一個(gè)包含會(huì)話(huà)變量和關(guān)聯(lián)值的鍵值對(duì)的字典對(duì)象。

例如,要設(shè)置'username'會(huì)話(huà)變量,請(qǐng)使用語(yǔ)句 -

# Filename : example.py
# Copyright : 2020 By Nhooo
# Author by : www.soo66.com
# Date : 2020-08-08
Session['username'] = 'admin'

要?jiǎng)h除會(huì)話(huà)變量,請(qǐng)使用pop()方法。

# Filename : example.py
# Copyright : 2020 By Nhooo
# Author by : www.soo66.com
# Date : 2020-08-08
session.pop('username', None)

以下代碼是Flask中會(huì)話(huà)如何工作的簡(jiǎn)單演示。 URL => '/' 提示用戶(hù)登錄,因?yàn)闀?huì)話(huà)變量username沒(méi)有設(shè)置。

# Filename : example.py
# Copyright : 2020 By Nhooo
# Author by : www.soo66.com
# Date : 2020-08-08
@app.route('/')
 def index():
    if 'username' in session:
       username = session['username']
          return 'Logged in as ' + username + '<br>' + \
          "<b><a href = '/logout'>click here to log out</a></b>"
    return "You are not logged in <br><a href = '/login'></b>" + \
       "click here to log in</b></a>"

當(dāng)用戶(hù)瀏覽到URL=>'/login'時(shí),login()函數(shù)顯示視圖,因?yàn)樗峭ㄟ^(guò)GET方法調(diào)用的,所以打開(kāi)一個(gè)登錄表單。

表單填寫(xiě)后重新提交到URL=> /login,現(xiàn)在會(huì)話(huà)變量被設(shè)置。 應(yīng)用程序被重定向到URL=> /。 這時(shí)找到會(huì)話(huà)變量:username。

# Filename : example.py
# Copyright : 2020 By Nhooo
# Author by : www.soo66.com
# Date : 2020-08-08
@app.route('/login', methods = ['GET', 'POST'])
 def login():
    if request.method == 'POST':
       session['username'] = request.form['username']
       return redirect(url_for('index'))
    return '''
    <form action = "" method = "post">
       <p><input type = text name = "username"/></p>
       <p<<input type = submit value = Login/></p>
    </form>
    '''

該應(yīng)用程序還包含一個(gè)logout()視圖函數(shù),它刪除’username’會(huì)話(huà)變量的值。 再次 URL 跳轉(zhuǎn)到 ‘/‘ 顯示開(kāi)始頁(yè)面。

# Filename : example.py
# Copyright : 2020 By Nhooo
# Author by : www.soo66.com
# Date : 2020-08-08
@app.route('/logout')
 def logout():
    # remove the username from the session if it is there
    session.pop('username', None)
    return redirect(url_for('index'))

運(yùn)行應(yīng)用程序并訪(fǎng)問(wèn)主頁(yè)(確保設(shè)置應(yīng)用程序的secret_key)。

# Filename : example.py
# Copyright : 2020 By Nhooo
# Author by : www.soo66.com
# Date : 2020-08-08
from flask import Flask, session, redirect, url_for, escape, request
 app = Flask(__name__)
 app.secret_key = 'any random string’

完整代碼如下所示 -

# Filename : example.py
# Copyright : 2020 By Nhooo
# Author by : www.soo66.com
# Date : 2020-08-08
from flask import Flask
 from flask import render_template
 from flask import request
 from flask import make_response
 from flask import Flask, session, redirect, url_for, escape, request
 app = Flask(__name__)
 app.secret_key = 'fkdjsafjdkfdlkjfadskjfadskljdsfklj'
 @app.route('/')
 def index():
     if 'username' in session:
         username = session['username']
         return '登錄用戶(hù)名是:' + username + '<br>' + \
                  "<b><a href = '/logout'>點(diǎn)擊這里注銷(xiāo)</a></b>"
     return "您暫未登錄, <br><a href = '/login'></b>" + \
          "點(diǎn)擊這里登錄</b></a>"
 @app.route('/login', methods = ['GET', 'POST'])
 def login():
     if request.method == 'POST':
         session['username'] = request.form['username']
         return redirect(url_for('index'))
     return '''
    <form action = "" method = "post">
       <p><input type ="text" name ="username"/></p>
       <p><input type ="submit" value ="登錄"/></p>
    </form>
    '''
 @app.route('/logout')
 def logout():
    # remove the username from the session if it is there
    session.pop('username', None)
    return redirect(url_for('index'))
 if __name__ == '__main__':
     app.run(debug = True)

輸出將顯示如下。點(diǎn)擊鏈接“ 點(diǎn)擊這里登錄”。

點(diǎn)擊登錄

該鏈接將被引導(dǎo)至另一個(gè)界面。 輸入’admin’。

輸入admin

屏幕會(huì)顯示消息“ 登錄用戶(hù)名是:admin”。如下所示 -

點(diǎn)擊注銷(xiāo)

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清