前言
理解Session之前,一定要先理解cookie,可以參考上一篇文章Django之cookie
session作爲一種會話技術,其底層是基於cookie,當然session是存在於Server端的,因此更加安全。實際當中商城的購物車、第一次次登陸之後直接訪問首頁的操作,都可以基於會話技術中的session來實現,非常方便安全。
下面對比上篇文章的Django之cookie的登錄、訪問首頁的操作,用session來實現記錄。通過實際的操作,對比cookie來進一步理解session
參考
以下文章方便客戶用來理解session
Django操作session理解三點:
- 獲取、設置、刪除及其它api操作
- Session詳細流程解析,這個是重點
- Django中的Session配置,也就是session用什麼來存儲
其中最重要的是理解session流程
cookie和session在Django中的應用:對於cookie和session在一起理解了,可以對比了解。
實操
對於參考部分內容,仔細看看,先理解下,下面就是通過前一篇文章的基礎上,實際操作理解session:
準備
- 數據遷移
執行:makemigrations migrate 命令
DJango的session是基於app和中間件的,在settings.py中
INSTALLED_APPS = [
...
'django.contrib.sessions',
...
]
MIDDLEWARE = [
...
'django.contrib.sessions.middleware.SessionMiddleware',
...
]
其中 django.contrib.sessions.middleware.SessionMiddleware 是DJango中間件,如果不用項目中不用session是可以屏蔽掉的,節省資源;如果使用session,默認session存儲在db中的
session存儲位置有幾種方式,可以根據需要是否要django.contrib.sessions App配置
代碼
對比上一篇文章 DJango cookie
views.py中通過 通過cookie設置用戶名和通過cookie獲取用戶名,改成sessiion的形式就可以了,另外template裏面已經寫好了對應的UI界面。
直接訪問index頁面會跳轉到login界面;從登陸界面提交用戶名和密碼,如果匹配正確就會跳轉到index界面,同時server端通過Session記錄用戶名;再次進入index界面時候,直接從session中獲取用戶名,如果存在就允許直接進入index界面
看下數據庫
完整Demo代碼下載地址