摘要:跟不同會話數(shù)據(jù)存儲于服務(wù)器上會話是指一個客戶在一個服務(wù)上從登錄到注銷之間的時間段會話中需要存儲的會話數(shù)據(jù)儲存在服務(wù)器上的一個臨時目錄中每個會話都被分配了一個會話會話數(shù)據(jù)以的形式存儲并且服務(wù)器會把會話數(shù)據(jù)進(jìn)行加密為了進(jìn)行這樣的加密應(yīng)用需要定義
跟Cookie不同, 會話(Session)數(shù)據(jù)存儲于服務(wù)器上. 會話是指一個客戶在一個web服務(wù)上從登錄到注銷之間的時間段. 會話中需要存儲的會話數(shù)據(jù), 儲存在服務(wù)器上的一個臨時目錄中.
每個會話都被分配了一個會話ID, 會話數(shù)據(jù)以Cookie的形式存儲, 并且服務(wù)器會把會話數(shù)據(jù)進(jìn)行加密. 為了進(jìn)行這樣的加密, Flask應(yīng)用需要定義一個配置: SECRET_KEY.
會話對象同樣是一個字典, 對應(yīng)的鍵值分別是Session的各個鍵和對應(yīng)的值.
例如, 如果設(shè)置一個會話變量username:
session[‘username’] = ’admin’
如果要釋放這個變量, 使用pop()方法:
session.pop("username", None)
下面的代碼簡單演示了會話在Flask中如何使用. 訪問URL "/" 時, 如果會話變量username沒有被設(shè)置, 則提示用戶需要登錄.
@app.route("/") def index(): if "username" in session: username = session["username"] return "Logged in as " + username + "
" + "click here to log out" return "You are not logged in
" + "click here to log in"
如果用戶瀏覽到URL "/login" 上, 對應(yīng)著login()函數(shù), 因為此時請求使用的GET方法, 所以瀏覽器展示出一個登錄表單. 當(dāng)表單提交時, 會POST到 "/login" 上, 此時我們設(shè)置會話變量, 并重定向到 "/" 上, 這時, "username"這個會話變量就可以找到了.
@app.route("/login", methods = ["GET", "POST"]) def login(): if request.method == "POST": session["username"] = request.form["username"] return redirect(url_for("index")) return """"""
這個應(yīng)用同樣有個logout()注銷方法, 這個方法清除會話變量"usernmae", 這樣之后, 訪問URL "/"就會展示提示用戶登錄的字樣.
@app.route("/logout") def logout(): # remove the username from the session if it is there session.pop("username", None) return redirect(url_for("index"))
按如下的方式配置密鑰:
from flask import Flask, session, redirect, url_for, escape, request app = Flask(__name__) app.secret_key = "any random string’
然后我們就可以啟動應(yīng)用, 觀察各個url的輸出了.
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/40949.html
摘要:類有一個方法當(dāng)我們調(diào)用它時它會返回一個響應(yīng)對象并且按指定的狀態(tài)碼將用戶重定向到另一個位置方法的原型如下在上面的函數(shù)中我們要重定向的位置狀態(tài)碼會在頭中發(fā)送給瀏覽器默認(rèn)為用這個參數(shù)來初始化響應(yīng)對象下面是一些標(biāo)準(zhǔn)的狀態(tài)碼重定向的狀態(tài)碼默認(rèn)是也就是 Flask類有一個redirect()方法. 當(dāng)我們調(diào)用它時, 它會返回一個響應(yīng)對象并且按指定的狀態(tài)碼將用戶重定向到另一個位置. redirect...
摘要:我們可以讓綁定到某個的函數(shù)返回比如下面的代碼中函數(shù)會返回由包裹的字符串但大家看得出這樣直接通過代碼返回內(nèi)容顯得很笨尤其當(dāng)我們碰到需要對輸入變量做條件判斷和循環(huán)時我們經(jīng)常需要做字符串嵌入拼接這種體力活這種情況下我們需要利用自帶的模版引擎我們可 我們可以讓綁定到某個URL的函數(shù)返回HTML. 比如下面的代碼中, hello()函數(shù)會返回由包裹的Hello World字符串. from fl...
摘要:一個應(yīng)用經(jīng)常需要或之類的靜態(tài)文件來幫助網(wǎng)頁更好的展示內(nèi)容通常服務(wù)器被用來提供這種靜態(tài)文件服務(wù)但在程序的開發(fā)階段這些文件需要被放置在應(yīng)用根目錄下的文件夾中啟動后使用時前綴以開頭在下面的例子中文件中定義了一個函數(shù)這個函數(shù)在中可以被一個按鈕的事件 一個web應(yīng)用經(jīng)常需要javascript或css之類的靜態(tài)文件來幫助網(wǎng)頁更好的展示內(nèi)容. 通常, web服務(wù)器被用來提供這種靜態(tài)文件服務(wù), 但在...
摘要:之前我們已經(jīng)看到在中我們可以給規(guī)則指定方法對應(yīng)的函數(shù)可以按字典形式接收表單數(shù)據(jù)然后將這些數(shù)據(jù)輸送到模板中并最終渲染為網(wǎng)頁在下面的例子中渲染一個含有表單的網(wǎng)頁填入到表單的數(shù)據(jù)被到然后觸發(fā)了函數(shù)函數(shù)將表單數(shù)據(jù)組裝起來放入字典對象中然后發(fā)送到模板 之前我們已經(jīng)看到在Flask中我們可以給URL規(guī)則指定http方法, 對應(yīng)的函數(shù)可以按字典形式接收表單數(shù)據(jù), 然后將這些數(shù)據(jù)輸送到模板中并最終渲染...
摘要:協(xié)議是萬維網(wǎng)數(shù)據(jù)通信的基礎(chǔ)在這個協(xié)議上可以對同一使用不同的方法獲取數(shù)據(jù)下面展示了幾種不同的方法將未經(jīng)加密的信息發(fā)送的服務(wù)器是最通用的方法該方法除了服務(wù)端不返回響應(yīng)內(nèi)容只返回頭信息之外同是一樣的用于向服務(wù)器發(fā)送表單數(shù)據(jù)請求不會被緩存將所指示的 HTTP協(xié)議是萬維網(wǎng)數(shù)據(jù)通信的基礎(chǔ). 在這個協(xié)議上可以對同一URL使用不同的方法獲取數(shù)據(jù).下面展示了幾種不同的HTTP方法. GET 將未經(jīng)加...
閱讀 1258·2021-09-27 13:34
閱讀 1072·2021-09-13 10:25
閱讀 571·2019-08-30 15:52
閱讀 3513·2019-08-30 13:48
閱讀 744·2019-08-30 11:07
閱讀 2231·2019-08-29 16:23
閱讀 2057·2019-08-29 13:51
閱讀 2392·2019-08-26 17:42