1. 程式人生 > 實用技巧 >Django 基礎實踐(二):session會話--上篇

Django 基礎實踐(二):session會話--上篇

因為因特網HTTP協議的特性,每一次來自於使用者瀏覽器的請求(request)都是無狀態的、獨立的。通俗地說,就是無法儲存使用者狀態,後臺伺服器根本就不知道當前請求和以前及以後請求是否來自同一使用者。對於靜態網站,這可能不是個問題,而對於動態網站,尤其是京東、天貓、銀行等購物或金融網站,無法識別使用者並保持使用者狀態是致命的,根本就無法提供服務。你可以嘗試將瀏覽器的cookie功能關閉,你會發現將無法在京東登入和購物。

為了實現連線狀態的保持功能,網站會通過使用者的瀏覽器在使用者機器內被限定的硬碟位置中寫入一些資料,也就是所謂的Cookie。通過Cookie可以儲存一些諸如使用者名稱、瀏覽記錄、表單記錄、登入和登出等各種資料。但是這種方式非常不安全,因為Cookie儲存在使用者的機器上,如果Cookie被偽造、篡改或刪除,就會造成極大的安全威脅,因此,現代網站設計通常將Cookie用來儲存一些不重要的內容,實際的使用者資料和狀態還是以Session會話的方式儲存在伺服器端。

但是,必須清楚的是 Session依賴Cookie !不同的地方在於Session將所有的資料都放在伺服器端,使用者瀏覽器的Cookie中只會儲存一個非明文的識別資訊,比如雜湊值。

Django提供了一個通用的Session框架,並且可以使用多種session資料的儲存方式:

  • 儲存在資料庫內
  • 儲存到快取
  • 儲存到檔案內
  • 儲存到cookie內
    通常情況,沒有特別需求的話,請使用儲存在資料庫內的方式,儘量不要儲存到Cookie內。

Django的session框架預設啟用,並已經註冊在app設定內,如果真的沒有啟用,那麼參考下面的內容新增有說明的那兩行,再執行migrate命令建立資料表,就可以使用session了。