Django会话

使用会话

Django完全支持匿名会话。会话基础架构允许您存储和检索基于“一个站点一个访问者”的任意数据。数据存储在服务器端; cookies的发送和接收是透明的。Cookie包含会话ID,而不是数据本身(除非您使用基于cookie的引擎)。

激活会话

会话通过中间件组件实现。

要启用会话功能,请执行以下操作:

  • 检查设置是否MIDDLEWARE完好'django.contrib.sessions.middleware.SessionMiddleware'。该文件settings.py默认由活动创建。django-admin startprojectSessionMiddleware

如果你不想使用会话,你很可能会删除行SessionMiddlewareMIDDLEWARE和行'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

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值