在django中操作session
django中的session
默認情況下是存儲在服務器的數據庫中的,在表中會根據sessionid
,即session_key數據,然后再把這個sessionid
放到cookie中發送給瀏覽器存儲,瀏覽器下次再向服務器發送請求的時候會自動的把所有cookie
信息都發送給服務器,服務器再從cookie
中獲取sessionid
然后再從數據庫中獲取session
數據。但是我們在操作session的時候,這些細節根本不用管,我們只需要通過request.session
即可操作。 示例代碼如下:
def session_test(request):
request.session.get('username')
return HttpResponse('獲取session')
session
常用方法如下:
get
: 從session中獲取指定值pop
: 從session中刪除一個值, 並返回keys
: 從session中獲取所有的鍵(key)items
: 從session中獲取所有的值, 返回如這樣的數據:dict_items([('username', 'long'), ('pwd', 'yanyan')])
clear
: 清除當前用戶的session數據,sessionid
還會存在flush
: 刪除session並且刪除瀏覽器中存儲的sessionid
, 一般在注銷的時候用得比較多 (會把服務器中django_session表中的數據一並刪除掉)set_expiry(value)
: 設置過期時間 默認不設置的話,過期時間是2周
*整數
: 代表秒數,表示多少秒后過期
*0
: 零, 代表只要瀏覽器關閉,session就會過期
*None
: 使用全局的session配置。在session.py
中可以設置SESSION_COOKIE_AGE
來配置全局的過期時間, 默認也是兩周過期- clear_expired: 清除過期的
session
。 Django並不會清除過期的session,需要定期手動的清理,或者是在終端,使用命令行python manage.py clearsessions
來清除過期的session