Django之Cookies和Session笔记

1. 特点及背景:

  1. http协议特点:无状态明文传输协议。
  2. 会话:从打开浏览器访问一个网站,到关闭浏览器结束此次访问。
  3. cookies和session:为保持会话状态而诞生的两个存储技术。

2. Cookies 特点

  1. 客户端浏览器上存储空间。
  2. 以键值对方式存储,键和值都是ASCII码字符串的形式。
  3. 按域存储隔离,不同网站数据相互隔离。
  4. 客户端向服务端发送请求时,cookies都是自动提交。
Django之Cookies和Session笔记

3.Django设置浏览器cookie(HttpResponse对象)

  1. 添加、修改cookie HttpResponse.set_cookie(key,value='',max_age=None,expires=None)
    key: cookie的名字
    value: cookie的值
    max_age: cookie存活时间,秒为单位
    expires: 具体过期时间
    不指定max_age和expires时,关闭浏览器此数据失败
  2. 删除cookie
    HttpResponse.delete_cookie(key)
    删除指定的key不存在时,什么也不会发生。
  3. 获取cookie
value = request.COOKIES.get('cookies1名','默认值')
 print("cookies名 = “,value)

4.Session特点

  1. 在服务器端存储状态数据。
  2. 使用session技术,仍然需要使用客户端的cookies存储sessionid。
  3. 每个客户端在服务器有一个独立的Session,不同的请求者之间不共享数据,与请求者一一对应。

5.Django中配置Session

  1. 在settings.py文件中,向INSTALLED_APPS列表中添加:
    INSTALL_APPS = [
      # 启用 sessions应用
      'django.contrib.sessions',
    ]
    
  2. 向MIDDLEWARE列表中添加:
    MIDDLEWARE = [
       # 启用session 中间件
       'django.contrib.sessions.middleware.SessionMiddleware',
    ]
    

6.session基本操作

session类似于字典的SessionStore类型的对象,可以用类似字典的方式进行操作,session只能存储能序列化的数据,如字典,列表等。

  1. 保存session的值到服务器
    request.session['KEY'] = VALUE
  2. 获取session的值
    VALUE = request.session['KEY']
    VALUE = request.session.get['KEY',缺省值]
    
  1. 删除session的值
    del request.session['KEY']
  2. 在settings.py中有关session的设置
    SESSION_COOKIE_AGE:

    作用:指定sessionid在cookies中的保存时长(默认是2周)
    SESSION_EXPIRE_AT_BROWSER_CLOSE = True 设置只要浏览。器关闭时,session就失效(默认为False)。
    注: 当使用session时需要迁移数据库,否则会出现错误。
    python3 manage.py migrate:

  3. django原生session问题:
    1. django_session表是单表设计,且该数据量持续增持”浏览器故意删除sessionid&过期数据未删除”。
    2. 可以每晚执行python3 manage.py clearsessions 该命令可删除已过期session数据。

7.Cookies VS Session

  1. 存储位置: C-浏览器中 S-服务器中[mysql]
  2. 安全性: C-不安全 S-相对安全一些
  3. 不要存储敏感数据(如密码)

网络云笔记项目

1.创建项目并配置环境

  1. 创建项目 django-admin startproject net_note
  2. 启动项目 python3 managelpy runserver
  3. 创建数据库 create database net_note default charset utf8;

2.创建User应用和配置

  1. 创建并注册应用;python3 manage.py startapp user
  2. 修改配置文件 settings.py,注释掉”csrf“相关部分
  3. 创建User应用下的models.py,并执行命令生成数据表
    python3 manage.py makemigrations
    python3 manage.py migrate
  4. 添加路由设置
    1. 在主路由urls.py中,添加分布式路由设置
      path('user/',include('user,urls'))
    2. 在user应用下,添加urls.py文件,并增加路由设置。
      路由正则 视图函数 模板位置 说明
      /user/login login_view templates/user/login.html 登陆
      /user/reg Reg_view Templates/user/register.html 注册
      /user/logout Logout_view 退出
  5. 在user应用下views中,编写视图函数。
  6. 在user下添加templates/user目录,目录下添加login.html和register.html模板页。

3.创建note应用并配置

  1. 添加note应用,并注册:
    python3 manage.py startapp note
  2. 在note应用下models.py模块中添加note类
  3. 生成note表
    1. python3 manage.py makemigrations
    2. pythons manage.py migrate
  4. 添加路由
  5. 在note应用下添加模板页。
版权声明:seasilo 发表于 2021-02-20 9:52:06。
转载请注明:Django之Cookies和Session笔记 | 海筒自习室

暂无评论

暂无评论...