2020.5.8 Session and Cookie

发布于 2020-05-08  41 次阅读


Table of Contents


作者的信息

  • Author查询方法(自动生成 (类名)boot_set)

    • author.book_set.all()
    • author.book_set.filter()
    • author.book_set.create(...) # 创建新书并联作用author
    • author.book_set.add(book) # 添加已有的书为当前作者author
    • author.book_set.clear() # 删除author所有并联的书
    • author.book_set.remove() # 删除所author所有并联的书
  • Cookie和Session(会话)

      • cookies保存在浏览器上,通常用来记录一些简要的信息
      • 如果有cookie每次请求会都带着cookie信息
      • cookies 在浏览器上是以键-值对的形式进行存储的,键和值都是以ASCII字符串的形存储(不能是中文字符
        串)
      • Django中设置cookie要用HttpResponse对象
      • 添加修改cookie
        • render()返回的是HttpResponse对象,
        • redirect()返回的是HttpResponse对象
        • set_cookie(key,value=‘’,max_age=None,expires=None)
          • key:cookie 的名字
          • value:cookie的值
          • max_age:cookie 存活的时间,单位为秒
          • expires:具体过期时间 datatime
      • 删除cookie
        • httpResponse.delete_cookie(key名字)
      • 获取cookie
        • httpResponse.COOKIES.get(‘key’,“默认值”)
    • Session
      • session简单特点
        • session是保留浏览器和服务器交互时候的数据
        • 每个客户端会有一个独立的session
        • http协议没有状态,每次请求不会记得之前的状态
        • 客户端和服务器的一次通信,就是会话
        • 实现状态保存的方式:在客户端和服务器存储会话有关的信息
        • 通常在session存具体信息,cookie中存session_id
      • Django session 使用前检查
        • 1.确定在setting中的INSTALLED_APPS有'django.contrib.sessions',
        • 2.MIDDLEWARE中有'django.contrib.sessions.middleware.SessionMiddleware',
      • session的基本操作
        • session类似一个字典,操作方法大同小异
        • session只能存储序列化的数据,如字典列表
        • 保存cookie
          • request.session[键] = 值
            如: request.session['KEY'] = VALUE
        • 获取session值
          • VALUE = request.session['KEY']

            VALUE = request.session.get('KEY', 缺省值)
        • 删除session的值
          • del request.session['KEY']
        • 在 settings.py 中有关 session 的设置
          1. SESSION_COOKIE_AGE 作用:指定sessionid在cookies中的保存时长
            SESSION_COOKIE_AGE = 60*30
          2. SESSION_EXPIRE_AT_BROWSER_CLOSE = True 设置只要浏览器关闭时,session就失效
        • 注意:使用session时候,需要迁移数据库
  • 4.扩展延伸知识

    • Django一对一和一对多的实现

      • 就是在多对多的字段添加,Unique唯一属性
    • django 多对多查询

      • 多相当于一个管理器
    • base64
    • python中time使用

      • time模块中表现形式有三种

        • timestamp时间戳(1970.1.1 00:00开始计算的秒数)
        • struct_time 时间元组 九个元素组
        • format time 格式化时间为指定格式
      • 时间格式转换图
      • 主要生成方法和转换方法
        • 时间戳(timestamp) time.time()
        • 时间元组(struct_time) time.localtime()
          • 可以有一个时间戳参数
        • 格式化之后的时间(format time)
          • time.strftime("%Y-%m-%d %X")
      • https://www.cnblogs.com/tkqasn/p/6001134.html
    • python中datatime使用

      • 优势:datatime模块重新封装了time模块,提供更多接口,提供的类有:date,time,datetime,timedelta,tzinfo。
      • datetime是模块,datetime模块还包含一个datetime类
      • 获取当前日期和时间
        • datetime.now()
      • 获取指定时间
        • datetime(2015.4.12.12.20) 2015-04-12 12:12:00
      • 时间戳和datetime互相转换
        • datetime(生成的对象).timestamp() datetime转时间戳
        • datetime.fromtimestamp(时间戳) 时间戳转datetime
      • str转换为datetime
        • datetime.strptime(‘2015-2-14 12:12’,%Y-%m-%d %H:%M;%S”)
      • datetime转换为str
        • datetime(生成的对象).strftime('%a, %b %d %H:%M')
      • https://www.liaoxuefeng.com/wiki/1016959663602400/1017648783851616
    • eval的用法

      • 还可以定义数据

    6.今天都复习了之前的什么内容