文章目錄
-
-
- 會話
- Cookies
-
- 使用
- 删除和使用
- session
-
- session配置
- session的使用
- settint.py中的相關配置
- Django session的問題
-
會話
- 從打開浏覽器通路一個網站,到關閉浏覽器結束此次通路,稱之為一次會話
- HTTP協定是無狀态的,導緻會話狀态難以保護
- cookies和session就是為了保持會話狀态而誕生的兩個儲存技術
Cookies
cookies是儲存在用戶端浏覽器上的存儲空間
- cookies在浏覽器上是以鍵值對的形式進行存儲的,鍵和值都是ASCII字元串的形式存儲(沒有中文)
- 是有存儲周期的
- cookies中的資料都是按域存儲隔離的,不同域之間無法通路
- cookies的内部資料會在每次通路此網址時都會攜帶到伺服器端,如果cookies過大會降低響應速度
使用
HttpResponse.set_cookie(key,value='', max_age = None, expires = None)
- key cookie的名字
- value cook的值
- max_age cookie存活時間,秒為機關
- expire 具體過期時間
- 不知道max_age和expire時 關閉浏覽器就過期
删除和使用
-
删除
HttpResponse.delete_cookie(key)
删除指定key的cookie,如果沒有不會發生
-
擷取
request.COOKIES cookies字典
request.COOKIES.get 溫柔點的取值
session
存儲在伺服器端,借助cookie實作
浏覽器向伺服器送出資料,然後生成session存在資料庫,并将sessionid 傳回給浏覽器,然後浏覽器将sessionid作為cookie儲存。每個用戶端在伺服器端有一個獨立的session
session配置
- 在INSTALLED_APPS中添加’django.contrib.sessions’
- 在MIDDLEWARE中添加’django.contrib.sessions.middleware.SessionMiddleware’
session的使用
session對象是一個類似于字典的sessionstore類型的對象,可以用類似于字典的方式操作
session能存儲字元串,整形,字典,清單等
-
儲存session的值到伺服器
request.session[‘key’] = value
-
擷取session的值
value = request.session[‘key’]
value = request.session.get(‘key’,預設值)
-
删除session
del request.session[‘key’]
settint.py中的相關配置
- SESSION_COOKIE_AGE
- 指定sessionid在cookies中的儲存時長(預設兩周)機關是秒
-
SESSION_EXPIRES_AT_BROWSER_CLOSE = True
設定隻要關閉浏覽器,session就失效(預設為false)
注意:伺服器端将session儲存在資料庫中,確定之前進行過資料庫的遷移migrate等
Django session的問題
- Django_session表是單表設計,随着使用者增多,内容會慢慢增加的,而且過期與删除後不會自動删除資料
- 可以每晚執行python mange.py clearsessions【可以删除已經過期的session資料】