[Django1.8]sessions

- 如何使用sessions:

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, 可以重複編輯。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章