python web開發-flask中response、cookies、session對象使用詳解

來源:互聯網
上載者:User

標籤:程式設計語言   Python   

Response 響應對象


當一個web請求被伺服器處理完後,會返回使用者請求的響應,這時候就要用到響應對象,根據響應給使用者的形式不同,響應對象有以下幾種處理方式


1. 如果返回的是一個合法的響應對象,它會從視圖直接返回。

2. 如果返回的是一個字串,響應對象會用字串資料和預設參數建立。

3. 如果返回的是一個元組,且元組中的元素可以提供額外的資訊。這樣的元組必須是(response, status, headers) 的形式,且至少包含一個元素。 status 值會覆蓋狀態碼, headers 可以是一個列表或字典,作為額外的訊息標題值。

4. 如果上述條件均不滿足, Flask 會假設傳回值是一個合法的 WSGI 應用程式,並轉換為一個請求對象。


以上從引用官網的一段話,其實簡單來說就是所有的響應都會產生一個合法的響應對象,我們平常用的最多的就是直接返回字串或是返回一個template。最終都會被flask處理成response對象。


Cookies對象:


Cookies用於在用戶端儲存一些資訊, 當flask應用響應使用者請求時可以設定cookies的值,當使用者請求flask應用時可以擷取cookies的值。

簡單來說,設定cookies的方式為:

responseObj.set_cookies(“xxx”) ,此處的responseObj是一個response的執行個體,xxx是cookies的名稱

擷取cookies的方式為

request.cookies.get(“xxx”),此處的request是全域request對象,xxx是cookies的名稱

下面通過一個例子來說明cookies的使用

  1. 建立一個設定cookies的方法:


@app.route()setCookies():     res = make_response()     res.set_cookie(,)     res

註:需要import make_response方法


2. 建立一個擷取cookies的方法


@app.route()getCookies():     myCookies = request.cookies.get()     myCookies


3. 測試應用


訪問 /setCookies 方法

訪問/getCookies方法


Session對象:


它允許你在不同請求間儲存特定使用者的資訊。它是在 Cookies 的基礎上實現的,並且對 Cookies 進行密鑰簽名。這意味著使用者可以查看你 Cookie 的內容,但卻不能修改它,除非使用者知道簽名的密鑰。

Session可以通過session[‘xxx’]=’yyy’進行設定,其中xxx是key值,yyy是session的value。

通過session.pop(‘xxx’,none)把key是xxx的session移除

一般用session進行使用者是否登入的驗證

下面舉例來說明:


  1. 設定session


使用下面的代碼

@app.route()setSession():     session[] = session[]

使用session時要先設定app_secret不然會報錯:

RuntimeError: The session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret.

在調用此代碼之前加上secret_key的設定

app.secret_key = "1234"

安全起見,secret_key要設定的複雜一些,這裡示範用就簡單設定了。


2. 驗證session


代碼如下:

@app.route()checkSession():     session:         :


3. 移除session


代碼如下:

@app.route()removeSession():     session.pop(,)


4. 驗證


訪問/setSession

驗證session 訪問/checkSession

證明session存在

下一步,移除session

然後我們再次驗證session。

Session已丟失

python web開發-flask中response、cookies、session對象使用詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.