在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
