2020.5.8 Session and Cookie

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


1.复习内容

2.灵感代办

3.学习内容

  • django 多对多映射

    • 使用:

      • 一个作者可以写多本书,一个书可以有多个作者共同完成。
    • 创建:

      • author = models.Book.ManyToManyField(类名)
      • Book中添加一个字段为作者id
    • Book查询方法:(书Book ,作者Author)

      • book.authors.all() -> 获取 book 对应的所有的author的信息
      • book.authors.filter(age__gt=80) -> 获取book对应的作者中年龄大于80岁的
        作者的信息
    • 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.今天都复习了之前的什么内容


Ares个人进阶之路