Django3—session与cookie简介与读取

5 篇文章 0 订阅

cookie是什么?

  • cookie指某些网站辨别用户身份,进行session跟踪而存储在用户本地终端上的数据(通常经过加密)
  • cookie由服务器生成,发送给User-Agent(一般浏览器),浏览器会将cookie的key/value保存到某个目录下的文本文件中,下次请求同一网站时就发送该Cookie给服务器(前提:浏览器启用Cookie)
  • cookie名称和值可以由服务器端开发自己定义,这样服务器可以用户是否为合法用户以及是否需要重新登录等
  • 服务器可以利用cookie包含信息的任意性来筛选并接触性维护这些信息,以判断在Http中传输的状态。
  • cookie信息可以在浏览器中直接查看,敏感信息不适合存放。

cookie特点:

  • cookie以键值格式存储数据 cookie基于域名安全,不同的域名的cookie不能互相访问
  • 当浏览器请求某网站时,会将浏览器存储跟网站相关的所有cookie提交给网站
    在这里插入图片描述

简单cookie流程图
首次访问,服务器会起个名字,然后以cookie键值对格式返回给浏览器,浏览器保存,再次访问服务器的时候会携带之前返回的cookie信息。
在这里插入图片描述设置和读取代码:

def set_cookies(request):
    # 设置cookie
    username = request.GET.get("username")
    response = HttpResponse('设置cookie')
    response.set_cookie('name',username,max_age=60*60)      # 设置cookie信息以及有效期限
    response.set_cookie("password",'123456',max_age=60*60)
    return response

def get_cookies(request):
    # 获取cookie键值对数据
    print(request.COOKIES)
    name = request.COOKIES.get('name')      # 获取cookie信息中的name值
    pwd = request.COOKIES.get('password')   # 获取cookie信息中的password值
    response = HttpResponse("name:{0},pwd:{1}".format(name,pwd))
    return response

运行结果:
在这里插入图片描述session是什么?
客户端请求服务端,服务端会为这次请求开辟一块内存空间,这个对象便是 Session 对象,存储结构为 ConcurrentHashMap。Session 弥补了 HTTP 无状态特性,服务器可以利用 Session 存储客户端在同一个会话期间的一些操作记录。
django会用数据库来存储session,之前没配置数据库,结果报了个错
在这里插入图片描述session流程
浏览器发送请求,服务器保存username和password然后返回cookie键值对格式数据session_id由浏览器保存,当浏览器再次访问服务器时会携带session_id发送给浏览器,然后可以读取到存储在服务器中的相关数据。
在这里插入图片描述设置和读取代码:

def set_session(request):
    # 设置session
    user_id = 1
    username = '李华'
    request.session['user_id'] = user_id
    request.session['username'] = username
    request.session.set_expiry(value=60*60)     # 设置session的有效期单位秒,若为0则表示浏览器关闭时过期
    return HttpResponse('set_session')

def get_session(request):
    # 获取session
    user_id = request.session.get('user_id')
    username = request.session.get('username')
    response = 'user_id:{0},username:{1}'.format(user_id,username)
    return HttpResponse(response)

运行结果
在这里插入图片描述在这里插入图片描述

简单来说区别:
session保存在服务器中,不易查看。cookie存储在本地中,易查看
cookie目的可以跟踪会话,也可以保存用户喜好或者保存用户名密码 session用来跟踪会话

参考:https://blog.csdn.net/qq_36894974/article/details/105322171?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161391280516780265460544%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161391280516780265460544&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~hot_rank-1-105322171.first_rank_v2_pc_rank_v29&utm_term=cookie

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

滴滴da

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值