使用会话
Django完全支持匿名会话。会话基础架构允许您存储和检索基于“一个站点一个访问者”的任意数据。数据存储在服务器端; cookies的发送和接收是透明的。Cookie包含会话ID,而不是数据本身(除非您使用基于cookie的引擎)。
激活会话
会话通过中间件组件实现。
要启用会话功能,请执行以下操作:
- 检查设置是否MIDDLEWARE完好'django.contrib.sessions.middleware.SessionMiddleware'。该文件settings.py默认由活动创建。django-admin startprojectSessionMiddleware
如果你不想使用会话,你很可能会删除行SessionMiddleware中MIDDLEWARE和行'django.contrib.sessions'的INSTALLED_APPS。这将为Django节省一些工作。
会话引擎配置
默认情况下,Django将会话存储在数据库中(使用模板django.contrib.sessions.models.Session)。虽然这可能很方便,但在某些配置中将会话数据存储在其他位置会更快; 因此可以配置Django将会话数据存储在文件系统或缓存中。
使用数据库会话
如果您想将会话内容放入数据库中,则必须添加'django.contrib.sessions'该设置INSTALLED_APPS。
配置完安装后,运行安装存储会话数据的单个数据库表。manage.py migrate
使用缓存会话
为获得最佳性能,建议使用基于缓存的会话引擎。
要使用Django缓存系统存储会话数据,首先需要确保配置缓存; 查看缓存文档以获取更多详细信息。
警告
只有在使用Memcached缓存引擎时才会缓存会话数据。本地内存缓存引擎不会保存足够长的数据,因为它是一个不错的选择,并且直接使用基于文件或基于数据库的会话引擎比直接使用它更快。全部由基于文件或数据库的缓存引擎完成。此外,本地内存中的缓存引擎不能正确处理多进程模式,因此在生产环境中可能不是一个好选择。
如果定义了多个缓存CACHES,Django使用默认缓存。要使用另一个缓存,请SESSION_CACHE_ALIAS使用此缓存的名称进行定义。
配置缓存后,您有两个选项可用于存储缓存的数据:
- 设置SESSION_ENGINE于"django.contrib.sessions.backends.cache"一个简单的会话存储。会话数据将直接存储在缓存中。但是,无法保证数据的持久性:如果缓存已满或缓存服务器重新启动,则可以刷新缓存的数据。
- 要获取缓存和持久会话数据,请设置SESSION_ENGINE为"django.contrib.sessions.backends.cached_db"。这是一个直接写入缓存,每次写入缓存也将写入数据库。仅当数据库尚未存在于缓存中时才会从数据库中读取会话。
两个会话存储都足够快,但简单缓存是最快的,因为它不处理持久性。在大多数情况下,引擎cached_db速度会很快,但如果您需要最佳性能并且您可以随时擦除会话数据,那么引擎cache就适合您。
如果您使用会话引擎cached_db,则还需要遵循使用数据库会话中介绍的配置指示信息。
使用基于文件的会话
要使用基于文件的会话,请将设置设置SESSION_ENGINE为"django.contrib.sessions.backends.file"。
可能还需要设置设置SESSION_FILE_PATH(默认值是tempfile.gettempdir()通常的结果/tmp)来控制Django存储会话文件的位置。检查Web服务器是否具有读取和写入权限。
使用基于cookie的会话
要使用基于cookie的会话,请将设置设置SESSION_ENGINE为"django.contrib.sessions.backends.signed_cookies"。会话数据将使用Django的加密签名和调优工具进行存储 SECRET_KEY。