[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, 可以重复编辑。


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