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

Response響應對象:web

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

  1. 若是返回的是一個合法的響應對象,它會從視圖直接返回。
  2. 若是返回的是一個字符串,響應對象會用字符串數據和默認參數建立。
  3. 若是返回的是一個元組,且元組中的元素能夠提供額外的信息。這樣的元組必須是(response, status, headers) 的形式,且至少包含一個元素。 status 值會覆蓋狀態代碼, headers 能夠是一個列表或字典,做爲額外的消息標頭值。
  4. 若是上述條件均不知足, Flask 會假設返回值是一個合法的 WSGI 應用程序,並轉換爲一個請求對象。

以上從引用官網的一段話,其實簡單來講就是全部的響應都會生成一個合法的響應對象,咱們日常用的最多的就是直接返回字符串或是返回一個template。最終都會被flask處理成response對象。安全

Cookies對象:服務器

 

Cookies用於在客戶端存儲一些信息, 當flask應用響應用戶請求時能夠設置cookies的值,當用戶請求flask應用時能夠獲取cookies的值。cookie

簡單來講,設置cookies的方式爲:session

responseObj.set_cookies(「xxx」)  ,此處的responseObj是一個response的實例,xxx是cookies的名稱app

獲取cookies的方式爲測試

request.cookies.get(「xxx」),此處的request是全局request對象,xxx是cookies的名稱this

下面經過一個例子來講明cookies的使用spa

  1. 建立一個設置cookies的方法:
  1. @app.route("/setCookies")
  2. def setCookies():
  3.     res = make_response("this page will set a cookies")
  4.     res.set_cookie("myCookies","my first cookies")
  5.     return res

注:須要import make_response方法

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

  1. @app.route("/getCookies")
  2. def getCookies():
  3.     myCookies = request.cookies.get("myCookies")
  4.     return 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

使用下面的代碼

  1. @app.route("/setSession")
  2. def setSession():
  3.     session["userName"] = "my session"
  4.     return session["userName"]

使用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的設置

  1. app.secret_key = "1234"

安全起見,secret_key要設置的複雜一些,這裏演示用就簡單設置了。

  2. 驗證session

代碼以下:

  1. @app.route("/checkSession")
  2. def checkSession():
  3.     if "userName" in session:
  4.         return "userName exist"
  5.     else:
  6.         return "userName lost"

  3. 移除session

代碼以下:

  1. @app.route("/removeSession")
  2. def removeSession():
  3.     session.pop("userName",None)
  4.     return "remove session!"
  1. 驗證

訪問/setSession

驗證session 訪問/checkSession

證實session存在

下一步,移除session

而後咱們再次驗證session。

Session已丟失

相關文章
相關標籤/搜索