7.4 状态保持

状态保持

HTTP协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态 客户端与服务器端的一次通信,就是一次会话 实现状态保持的方式:在客户端或服务器端存储与会话有关的数据 存储方式包括cookie、session,会话一般指session对象 使用cookie,所有数据存储在客户端,注意不要存储敏感信息 推荐使用sesison方式,所有数据存储在服务器端,在客户端cookie中存储session_id 状态保持的目的是在一段时间内跟踪请求者的状态,可以实现跨页面访问当前请求者的数据 注意:不同的请求者之间不会共享这个数据,与请求者一一对应

1. 开启session

使用django-admin startproject创建的项目默认启用 禁用会话:删除下面指定的两个值,禁用会话将节省一些性能消耗 Django 中session需要依赖数据库,因此需要确认数据库中是否存在 与session相关的 表 在settings.py文件中

  • 项INSTALLED_APPS列表中添加:
  • 'django.contrib.sessions',

  • 项MIDDLEWARE_CLASSES列表中添加:

  • 'django.contrib.sessions.middleware.SessionMiddleware',

    2. 使用session

    启用会话后,每个HttpRequest对象将具有一个session属性,它是一个类字典对象 get(key, default=None):根据键获取会话的值 clear():清除所有会话 flush():删除当前的会话数据并删除会话的Cookie del request.session['member_id']:删除会话 示例: ```

    session设置

    request.session[key] = value

session获取

request.session.get(key,default=Node)

session删除

删除单个key 不存在时报错

del request.session['a']

清除所有会话,但不会删除数据

request.session.clear()

删除当前的会话数据

request.session.flush() ```

3. session配置

在 settings.py 文件中进行设置:

# session 设置 
SESSION_COOKIE_AGE = 60 * 30 # 30分钟 
SESSION_SAVE_EVERY_REQUEST = True #如果SESSION_SAVE_EVERY_REQUEST是True,会话cookie将在每个请求中发送
SESSION_EXPIRE_AT_BROWSER_CLOSE = True # 关闭浏览器,则COOKIE失效 


#来自 <https://docs.djangoproject.com/en/1.11/topics/http/sessions/> 


以下设置为:10秒后过期
 # request.session['abc'] = 'abcdef'   
 # request.session.set_expiry(10)
Copyright © shxdledu.cn 2018 all right reserved,powered by Gitbook该文件修订时间: 2019-03-26 11:56:04

results matching ""

    No results matching ""