Django的cookie和session
一、cookie
1.特点
1. cookie数据保存在客户端,以key-value存储
2. cookie有过期时间,默认关闭浏览器过期
3. cookie是基于域名安全的,浏览器在访问一个服务器,只会把跟这个服务器相关的cookie发送过去
2.设置
response = make_response('响应内容')
response.set_cookie('<key>', '<value>', max_age='<过期时间: s>')
3.获取
request.COOKIES.get('<key>')
4.删除
response.delete_cookie('<key>')
二、session
1.特点
1. session数据保存在服务器,以key-value存储
2. session依赖于cookie,每个客户端的session信息标识保存在客户端cookie中
3. session也有过期时间,flask开启session过期时间之后默认30天,django中session过期时间默认2周
2.设置
request.session['<key>'] = '<value>'
3.获取
request.session.get('<key>')
4.存储方式
1.关系数据库
默认存储方式:django_session
SESSION_ENGINE='django.contrib.sessions.backends.db'
2.缓存
注意:Django框架缓存默认是服务器内存
SESSION_ENGINE='django.contrib.sessions.backends.cache'
3.混合存储
SESSION_ENGINE='django.contrib.sessions.backends.cached_db'
4. 将session信息存储到redis中
# 设置Django框架缓存的位置(如果不做设置,默认浏览器缓存) # 此处要把Django框架的缓存改为redis CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", # 设置redis数据库地址 "LOCATION": "redis://127.0.0.1:6379/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } }, "session": { "BACKEND": "django_redis.cache.RedisCache", # 设置redis数据库地址 "LOCATION": "redis://127.0.0.1:6379/2", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } }, } # 设置将Django框架的session存储到缓存中,上面已经把Django框架的缓存改为类redis # 所以session就储存到redis中 SESSION_ENGINE = "django.contrib.sessions.backends.cache" # 设置session存储空间的名称 SESSION_CACHE_ALIAS = "default"