Django提供完全的匿名session支持,session框架使你可以基於站點訪問者存儲和取得任意數據。
它在服務端存儲數據,提取發送和接收的cookies. Cookie包含一個session ID.
MIDDLEWARE_CLASSES:
'django.contrib.sessions.middleware.SessionMiddleware' # Sessions通過一箇中間件實現
-- 配置Session引擎:
默認情況下,Django在數據庫(database)中存儲sessions(使用model: django.contrib.sessions.models.Session).
雖然這很方便,但有時存儲在其他地方會更快,因此可以配置Django存儲session到文件系統(filesystem)或緩存(Cache)
--- 使用基於後臺數據庫的session
INSTALLED_APPS:
'django.contrib.sessions'
運行manage.py migrate 創建庫表
--- 使用基於後臺緩存的session
僅當你的後臺使用MemCached緩存時,才應該使用基於後臺緩存的session.
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}
默認使用CACHES中的default緩存, 如果要使用其他緩存,設置SESSION_CACHE_ALIAS.
一旦配置好,你有兩種選擇來使用cache存儲數據:
1. 只緩存,設置SESSION_ENGINE爲"django.contrib.sessions.backends.cache"
2. 要持久化,且緩存,設置SESSION_ENGINE爲"django.contrib.sessions.backends.cached_db" #同時要配置數據庫
--- 使用基於文件的sessions
設置SESSION_ENGINE爲"django.contrib.sessions.backends.file".
若設置SESSION_FILE_PATH,注意讀寫權限。
--- 使用基於cookie的sessions
設置SESSION_ENGINE爲"django.contrib.sessions.backends.signed_cookies".
注:推薦保持SESSION_COOKIE_HTTPONLY的設置爲True,以防止通過JavaScript訪問存儲的數據。
-- 在views中使用sessions
當SessionMiddleware被激活,每個HttpRequest對象(任何view函數的第一個參數)都將有一個session屬性,一個類字典的對象。
你可以在view的任意位置讀寫request.session, 可以重複編輯。