Django-cookies和session

会话

  • 从打开浏览器访问一个网站,到关闭浏览器结束此次访问,称之为一次会话
  • HTTP协议是无状态的,导致会话状态难以保护
  • cookies和session就是为了保持会话状态而诞生的两个储存技术

Cookies

cookies是保存在客户端浏览器上的存储空间

  • cookies在浏览器上是以键值对的形式进行存储的,键和值都是ASCII字符串的形式存储(没有中文)
  • 是有存储周期的
  • cookies中的数据都是按域存储隔离的,不同域之间无法访问
  • cookies的内部数据会在每次访问此网址时都会携带到服务器端,如果cookies过大会降低响应速度
使用
HttpResponse.set_cookie(key,value='', max_age = None, expires = None)
- key cookie的名字
- value cook的值
- max_age cookie存活时间,秒为单位
- expire 具体过期时间
- 不知道max_age和expire时 关闭浏览器就过期
删除和使用
  • 删除
    HttpResponse.delete_cookie(key)
    删除指定key的cookie,如果没有不会发生
  • 获取
    request.COOKIES cookies字典
    request.COOKIES.get 温柔点的取值

session

存储在服务器端,借助cookie实现

浏览器向服务器提交数据,然后生成session存在数据库,并将sessionid 返回给浏览器,然后浏览器将sessionid作为cookie保存。每个客户端在服务器端有一个独立的session

session配置
  1. 在INSTALLED_APPS中添加’django.contrib.sessions’
  2. 在MIDDLEWARE中添加’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’]
settint.py中的相关配置
  1. SESSION_COOKIE_AGE
    • 指定sessionid在cookies中的保存时长(默认两周)单位是秒
  2. SESSION_EXPIRES_AT_BROWSER_CLOSE = True
    设置只要关闭浏览器,session就失效(默认为false)

注意:服务器端将session储存在数据库中,确保之前进行过数据库的迁移migrate等

Django session的问题
  1. Django_session表是单表设计,随着用户增多,内容会慢慢增加的,而且过期与删除后不会自动删除数据
  2. 可以每晚执行python mange.py clearsessions【可以删除已经过期的session数据】
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值