05_request对象操作session详解

在django中操作session

django中的session默认情况下是存储在服务器的数据库中的,在表中会根据sessionid即session_key数据,然后再把这个sessionid 放到cookie中发送给浏览器存储,浏览器下次再向服务器发送请求的时候会自动的把所有cookie信息都发送给服务器,服务器再从cookie中获取sessionid然后再从数据库中获取session数据。但是我们在操作session的时候,这些细节根本不用管,我们只需要通过request.session即可操作。 示例代码如下:

def session_test(request):
    request.session.get('username')
    return HttpResponse('获取session')

session 常用方法如下:

  1. get: 从session中获取指定值
  2. pop: 从session中删除一个值, 并返回
  3. keys: 从session中获取所有的键(key)
  4. items: 从session中获取所有的值, 返回如这样的数据: dict_items([('username', 'long'), ('pwd', 'yanyan')])
  5. clear: 清除当前用户的session数据, sessionid还会存在
  6. flush: 删除session并且删除浏览器中存储的sessionid, 一般在注销的时候用得比较多 (会把服务器中django_session表中的数据一并删除掉)
  7. set_expiry(value): 设置过期时间 默认不设置的话,过期时间是2周
    * 整数: 代表秒数,表示多少秒后过期
    * 0: 零, 代表只要浏览器关闭,session就会过期
    * None: 使用全局的session配置。在session.py中可以设置SESSION_COOKIE_AGE来配置全局的过期时间, 默认也是两周过期
  8. clear_expired: 清除过期的session。 Django并不会清除过期的session,需要定期手动的清理,或者是在终端,使用命令行 python manage.py clearsessions 来清除过期的session
原文地址:https://www.cnblogs.com/nichengshishaonian/p/11523250.html