简单操作django中session和cookie
cookie
1.会话技术
2.客户端的会话技术( 数据库保存在浏览器上)
3.问题导致原因: 在web应用中,一次网络请求是从request开始,到response结束,跟以后的请求或者跟其他请求没有关系
导致每次请求之间的数据没有关系 (短链接,长连接:QQ)
解决: 在客户端保留数据(cookie)或者服务端保留数据(session)来建立关系
4.cookie的使用
1.存
格式: response.set_cookie(key,value)
通过response通知浏览器要保存key,value形式的cookie
示例:
def session_and_cookie(req):
req.session['int'] = '正军'
resp = HttpResponse('设置cookie') #可以改成重定向等,但
# 改成重定向的话函数或者类需要写在视图view里面,这与django的请求生命周期有关
resp.set_signed_cookie('uname',json.dumps('凯子'))
resp.set_cookie('name','qwertui')
resp.set_signed_cookie('shaxx','biding',salt='shax') #带签名的cookie(加盐)
return resp
2. 取
如果浏览器保留了cookie,那么每次请求该服务器的时候,会自动的携带该cookie
格式: request.COOKIES.get(key)
示例:
def get_session_and_cookie(req):
data = {
'key':req.session.get('int'),
'name':req.COOKIES.get('name'),
'uname':req.COOKIES.get('uname'),
'shaxx':req.get_signed_cookie('shaxx',salt='shax') #获取带签名的cookie(盐要相同,不然拿不到)
}
return JsonResponse(data)
3.设置过期时间
默认情况下,关闭浏览器cookie就会过期,有时候我们需要设置过期时间:
格式: response.set_cookie(key,value,expires=值)
expires=0 立马过期
expires=None 用不过期
expires= 值 单位是秒
expires=timedelta(days=值) 表示多少天后过期 hours=值 表示多少小时后过期.....
4.删除
response.delete_cookie(key)
5.cookie的应用场景:1.保存账号,密码 2.京东的购物车 3.保留用户的浏览信息 .....
**cookie中文问题: response.set_cookie(key,json.dumps(value)) 即可
注意:设置好cookie之后一定要返回给浏览器
cookie原理图
session
1.会话技术
2.服务端的会话技术
3.需要客户端的支持才可以
4.使用:
1.存
格式: request.session[key] = value
注意:在django中存储了一个session后,django会 自动 的生成session key,并将session key与 数据自
动的存储到 django_session表中去,数据会自动的用base64编码,并会 自动 的让浏览器的cookie存储
sessionid(就是sessison key) (在使用session前需要先做数据迁移)
2.取
格式: value = request.session.get(key)
注意: 在django中,会 自动 的将cookie中的sessionid拿出来跟数据库中的session key匹配,匹配成功后既可以获取值
3.清除
1.清除对应的cookie
2. del request.session
推荐的:3. request.session.flush() 会清楚对应的cookie及session
5.应用: 用户登陆认证
session原理图
简单操作django中session和cookie的更多相关文章
- Django中session的基础了解
基于cookie做用户验证时:敏感信息不适合放在cookie中 session依赖cookie session原理 cookie是保存在用户浏览器端的键值对 session是保存在服务器端的键值对 s ...
- 浅析Django之session与cookie
浅析Django之session与cookie 1 session与cookie概述 原理: 由于HTTP协议是无状态,无连接的,当用户发起网路请求时,需要服务端能标识用户ID,用以存储用户相关信息, ...
- 07flask中session及cookie的用法。
一,基本概念. 1,session的概念. session和cookie的作用有点类似,都是为了存储用户相关的信息.不同的是,cookie是存储在本地浏览器,而session是存储在服务器.存储在服务 ...
- 在Django中Session的那点事!
1.session是什么 首先引入度娘的解释:Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 We ...
- Django 用Session和Cookie分别实现记住用户登录状态
简介 由于http协议的请求是无状态的.故为了让用户在浏览器中再次访问该服务端时,他的登录状态能够保留(也可翻译为该用户访问这个服务端其他网页时不需再重复进行用户认证).我们可以采用Cookie或Se ...
- 转:django中session的实现机制
转:www.jianshu.com 要理解session,首先要搞清楚cookie的概念.由于http是无状态的,服务器不能记住用户的信息状态,因此若由同一个客户端发起的多条请求,服务器不能辨别这些请 ...
- django学习,session与cookie
Cookies,某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密).Cookie最早是网景公司的前雇员Lou Montulli在1993年3月的发明.Cook ...
- Django中Session
Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: ·数据库(默认) ·缓存 ·文件 ·缓存+数据库 ·加密cookie (1)数据库中的Session Djan ...
- django中session的存储位置
django-session 存放位置 设置session的保存位置,有三种方法: 保存在关系数据库(db) 保存在缓存数据库(cache) 或者 关系+缓存数据库(cache_db) 保存在文件系统 ...
随机推荐
- I/O系统(二)
程序查询流程1测试指令,查询IO设备是否就绪.2传送指令,当已经就绪时,执行传送功能.3转移指令,未就绪时,转移至继续测试IO设备的状态.当需要启动某一IO设备时,必须将该程序插入到现行程序中.1,由 ...
- 用BlockingQueue实现的简单发布订阅模式
- jinji2
---恢复内容开始--- part1 %d 十进制整数输出 int %f 浮点数(小数点后六位)float %c 单个字符输出 char % ...
- k8s中yaml文常见语法
在k8s中,所有的配置都是 json格式的.但为了读写方便,通常将这些配置写成yaml 格式,其运行的时候,还是会靠yaml引擎将其转化为json,apiserver 也仅接受json的数据类型. y ...
- ICSE 2018 论文
仅简单分析自己感兴趣的论文. 9.6 Million Links in Source Code Comments: Purpose, Evolution, and Decay 分析了 source c ...
- 面试简单整理之web
63.servlet是什么?运行过程? Servlet是一门用于开发动态web资源的技术. 运行过程: Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后: ①W ...
- Django使用第三方模块django-password-reset重置密码
网上关于django第三方模块django-password-reset重置密码的几篇博客有一个严重的bug 见博客:https://blog.csdn.net/qq_42820268/article ...
- BUAA_OO第一单元总结
OO第一单元总结 目录 作业总体分析 代码结构分析 遇到的bug问题 找到bug的方法 结语 一.作业总体分析 尽管这个单元三次作业都是表达式求导,但我认为每次作业的侧重点是不同的. 对于第一次 ...
- 图解HTTP第十章
Web 的攻击技术 1>在客户端即可篡改请求 2>针对 Web 应用的攻击模式 3>因输出值转义不完全引发的安全漏洞 [1]跨站脚本攻击 [2]SQL 注入攻击 [3]OS 命令注入 ...
- JAVA的环境变量配置
开发JAVA程序需要先准备开发环境,安装好操作系统后首先需要去下载JDK并安装. JDk(Java Development Kit )是Java开发工具包,如果您要开发基于Java的应用首先需要下载并 ...