cookie和session

cookies

  • cookies是保存在客户端浏览器上的存储空间,通常用来记录浏览器端自己的仔细和当前连接的确认信息。

  • cookies在浏览器上是以键值对的形式进行存储的,键和值都是以ASCII字符串的形式存储的(不能是中文字符串)。

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

  • HtttpResponse关于COOKIE的方法

    • 添加、修改COOKIE
      • HttpRespisne.set_cookie(key, value=’’, max_age=None,epires=None)
        • key: cookie的名字
        • value: cookie的值
        • max_age: cookie存活时间,秒为单位
        • expires: 具体过期时间
        • 当不指定max_age和expires时,关闭浏览器时此数据失效。
    • 删除COOKIE
      • HttpResponse.delete_cookie(key)
      • 删除指定的key的Cookie.如果key不存在则什么也没发生。
  • Django中的cookies

    • 使用响应对象HttpResponse等将cookie保存进客户端

      1. 方法一:
        from django.http import HttpResponse
        resp =  HttpResponse()
        resp.set_cookie('cookies名‘, cookie值, 超时时间)
        

      如:

      resp = HttpResponse()
      resp.set_cookie('myvar', 'weimz', 超期时间
      
      1. 方法二,使用render对象

        from django.shortcuts import render
        resp = render(request, 'xxx.html', locals())
        resp.set_cookie('cookies名’, cookies值, 超期时间)
        
      2. 获取cookie

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

        • 以下示例均在视图函数中调用

        • 添加cookie

          # 为浏览器添加键为 my_varl, 值为123, 过期时间为1小时的cookie
          responds = HttpResponse("已添加 my_varl, 值为123“)
          responds.set_set_cookie('my_varl', 123, 3600)
          return responds
          
        • 修改cookie

          # 为浏览器添加键为 my_varl,修改值为456, 过期时间为2小时的cookie
          responds = HttpResponse('已修改 my_varl,值为456’)
          responds.set_cookie('my_varl', 456, 3600*2)
          return responds
          
        • 删除cookie

          responds = HttpResponse('已删除 my_varl")
          responds.delete_cookie('my_varl')
          return responds
          
        • 获取cookie

          value = request.COOKIES.get('my_varl', '没有值!‘)
          print(’cookie my_varl = ', value)
          return HttpResponse('my_varl:' + value)
          

session回话控制

  • 什么是session

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

    • http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态
    • 实现状态保持的方法:在客户端或服务器存储与绘画有关的数据
    • 推荐使用session方式, 所有数据存储在服务器端
  • 实现方式

    • 使用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 只能够存储序列化的数据,如字典,列表等。
      1. 保存session的值到服务器
        • request.session[‘KEY’] = VALUE
      2. 获取session的值
        • VALUE = request.session[‘KEY’]
        • VALUE = request.session.get(‘KEY’, 缺省值)
      3. 删除session的值
        del request.session[‘KEY’]
      • 在 settings.py中有关session的设置
        1. SESSION_COOKIE_AGE
          • 作用:指定sessionid在cookies中的保存时长(默认是2周)如下:
          • SESSION_COOKIE_AGE = 606024*14
        2. SESSION_EXPIRE_AT_BROWSER_CLOSE = TRUE
          设置只要浏览器关闭时,session就失效(默认为False)
    • 模块

      • import django.conf.global_settings
  • 注:当使用session时需要迁移数据库,否则会出现错误

    	python3 manage.py makemigrations
    	python3 manage.py migrate
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值