Django中的Cookies与Session

Cookies

cookies是保存在客户端浏览器上的存储空间,通常用来记录浏览器端自己的信息和当前连接的确认信息
cookies 在浏览器上是以键-值对的形式进行存储的,键和值都是以ASCII字符串的形存储(不能是中文字符串)
cookies 的内部的数据会在每次访问此网址时都会携带到服务器端,如果cookies过大会降低响应速度

在Django服务器端来设置浏览器的COOKIE 必须通过 HttpResponse 对象来完成

  • 添加、修改COOKIE
    HttpResponse.set_cookie(key, value='', max_age=None, expires=None)
    key:cookie的名字
    value:cookie的值
    max_age:cookie存活时间,秒为单位
    expires:具体过期时间
    当不指定max_ageexpires 时,关闭浏览器时此数据失效

  • 删除COOKIE
    HttpResponse.delete_cookie(key)
    删除指定的key 的Cookie。 如果key 不存在则什么也不发生。

  • 设置cookie

    from django.http import HttpResponse
    resp = HttpResponse()
    resp.set_cookie('cookiesName', cookiesValue, 3600)
    
  • 修改cookie

    from django.shortcuts import render
    resp = render(request,'xxx.html',locals())
    resp.set_cookie('cookiesName', newCookiesValue, 3600)
    
  • 删除cookie

    # 删除浏览器键为 my_var1的cookie
    responds = HttpResponse("已删除 cookiesName")
    responds.delete_cookie('cookiesName')
    return responds
    
  • 获取cookie
    通过 request.COOKIES 绑定的字典(dict) 获取客户端的 COOKIES数据

    value = request.COOKIES.get('cookiesName', 'defaultValue')
    print("cookiesName = ", value)
    

    Chrome 浏览器 可能通过开发者工具的 Application >> Storage >> Cookies 查看和操作浏览器端所有的 Cookies 值

session 会话控制

session又名会话控制,是在服务器上开辟一段空间用于保留浏览器和服务器交互时的重要数据
session的起源:

  • http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态

  • 实现状态保持的方式:在客户端或服务器端存储与会话有关的数据

  • 推荐使用sesison方式,所有数据存储在服务器端

  • 实现方式

    • 使用 session 需要在浏览器客户端启动 cookie,且用在cookie中存储sessionid
    • 每个客户端都可以在服务器端有一个独立的Session
    • 注意:不同的请求者之间不会共享这个数据,与请求者一一对应
  • Django启用Session

    • settings.py 文件中

    • INSTALLED_APPS 列表中添加:

      INSTALLED_APPS = [
          # 启用 sessions 应用
          'django.contrib.sessions',
      ]
      
    • 向 MIDDLEWARE_CLASSES 列表中添加:

      MIDDLEWARE = [
          # 启用 Session 中间件
          'django.contrib.sessions.middleware.SessionMiddleware',
      ]
      
  • session的基本操作:
    session对于象是一个在似于字典的SessionStore类型的对象, 可以用类拟于字典的方式进行操作
    session 只能够存储能够序列化的数据,如字典,列表等。

    • 保存 session 的值到服务器
      request.session['KEY'] = VALUE
    • 获取session的值
      VALUE = request.session['KEY']
      VALUE = request.session.get('KEY', 缺省值)
    • 删除session的值
      del request.session['KEY']
    • settings.py 中有关 session 的设置
      SESSION_COOKIE_AGE
      作用: 指定sessionid在cookies中的保存时长(默认是2周),如下:SESSION_COOKIE_AGE = 60 * 60 * 24 * 7 * 2
      SESSION_EXPIRE_AT_BROWSER_CLOSE = True
      设置只要浏览器关闭时,session就失效(默认为False)
    • session 缺省配置
      import django.conf.global_settings
    • 注: 当使用session时需要迁移数据库,否则会出现错误
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值