当前位置:主页聚焦 > > 正文

Django学习笔记:cookies和session

时间: 2023-07-09 15:55:23 来源: 哔哩哔哩

Cookies:

信息在cookie里。

设置cookies


(资料图片仅供参考)

删除和获取cookies

其实删除cookies说通过把过期时间设置成0(立刻过期)来实现

Seesion

session有赖于cookies机制而存在的,不同于Cookes,session的信息在服务器内部

在django中说通过数据库存储。

cookie里存储的说seesionid,服务器拿到sessionid后解析后才能获取数据。

session在django项目中的配置:

session在django项目中的使用:

session在django中被封装成字典,使用起来非常简单,比cookies简单很多。

session的配置:

具体来说是放在了django_seession这个表里

及时浏览器清除了cookie(session)或者session过期,但是服务器的session还是存在,不会主动去删除,只有执行python3 clearsessions才能删除session的表中的过期数据内容。

利用中间件,django让session的操作变得十分简单,但是本文作为学习笔记,有必要去探究一下sessions实现,它是如何以来cookies进行工作的?

以登陆状态保持(注:由于我使用的是基于django的蓝鲸框架,sessionid名称为XXX_bk_sessionid)为例:

当django中通过['username']='shanshan'的时候。

1.用户发送用户账号密码到服务器,服务器验证通过后,服务器会为该session生成一个sessionid:z60i0XXXX....XXXXjcogbf,在响应头里添加:Set-Cookie:sessionid=z60i0XXXX....XXXXjcogbf

2.服务器在session数据库(或者redis)里加入一条数据:z60i0XXXX....XXXXjcogbf(具体id编号),“username=shanshan”字符串的加密编码字符串(在登陆场景中session data一般是用户名或者用户id等个人内容),expire(过期时间),而后发送响应给客户端。

当django中通过('username')的时候,通过以下步骤获取用户信息username:shanshan。

3.客户端的下次访问将会带上这个cookie(sessionid=z60i0XXXX....XXXXjcogbf),服务器端自动获取名为sessionid的cookie,取出key为sessionid的session,把session的值“z60i0XXXX....XXXXjcogbf”取出后在数据库(或者redis)中对比,得到用户个人信息username=“shanshan”,由django的session中间件get后返回程序。由此,服务器就知道当前服务的对象是谁并且知道服务对象的session没有过期,那么就不用返回登陆界面,直接返回用户请求的内容。

以上我们以登陆为场景,结合cookie机制来具体解释django对session的封装原理,至此,完成了对session和cookie对基础知识对学习。

关键词:

相关文章

Django学习笔记:cookies和session

Cookies:信息在cookie里。设置cookies删除和获取cookies其实删除cooki

来源:哔哩哔哩2023-07-09

泰康人寿快速应对重庆洪涝灾害

中国银行保险报网讯【记者朱艳霞】7月3日至4日,重庆万州区遭遇暴雨袭

来源:中国银行保险报2023-07-09

电影《消失的她》累计票房破30亿

据猫眼专业版数据,7月9日,电影《消失的她》上映18天,累计票房破30亿

来源:上海证券报·中国证券网2023-07-09

共话中国经济新机遇丨通讯:印度尼西亚菠萝加速对接中国大市场

共话中国经济新机遇丨通讯:印度尼西亚菠萝加速对接中国大市场---在印

来源:新华网2023-07-09

“玉”见万年中华文化 《寻古中国·玉石记》开播

由中央广播电视总台和国家文物局联合摄制的大型系列纪录片《寻古中国·

来源:央视新闻客户端2023-07-09