Django之Session
目录
介绍
Session 是一种在 Web 应用中跟踪用户状态的机制。它可以用于存储和管理用户会话数据,以实现对用户身份验证、状态保持和用户个性化设置的支持
Session和Cookie都是于客户端和浏览器中传输数据(response
和request
)
- Cookie将数据存储在浏览器
- Session将数据存储在数据库
Django操作Session
session数据保存在服务端,并会给客户端返回一个随机字符串
设置Session
这点和cookie也有所区别,cookie是服务端发送给客户端的数据,而session是从客户端获取标识并加密存储在服务端,因此用的是request
python
request.session['sign'] = '123123'
session存储在表中的样子:
获取Session
这样获取的是解密后的session
python
my_session = request.session.get('sign')
获取Session时内部发生的事情
- 获取客户端请求中的随机字符串
- 自动去存储session的表中对比
- 如果对比成功则自动获取并解密
设置过期时间
python
# 14天到期
request.session.set_expiry()
# 10秒后到期
request.session.set_expiry(10)
# 明天到期
request.session.set_expiry(datetime.datetime.now() + datetime.timedelta(days=1))
# 浏览器窗口关闭时到期
request.session.set_expiry(0)
清空session
python
# 只删除服务端的
request.session.delete()
# 服务端与客户端全部删除
request.session.flush()