简单操作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) 保存在文件系统 ...
随机推荐
- struts2各个功能详解(1)----参数自动封装和类型自动转换
struts2里面的各个功能,现在确实都不清楚,完全属于新学! 通过前面的例子,有时就会疑问,这些jsp中的数据信息是怎么传送给action的?例如: <form action = " ...
- JavaSE基础知识(7)—常用类
一.包装类 1.理解 java为八大基本数据类型一一对应提供了引用类型,方便使用里面的属性和方法 2.包装类型 byte——>Byteshort——>Shortint——>Integ ...
- python requests库网页爬取小实例:百度/360搜索关键词提交
百度/360搜索关键词提交全代码: #百度/360搜索关键词提交import requestskeyword='Python'try: #百度关键字 # kv={'wd':keyword} #360关 ...
- 欢迎来到Python世界
Python是一门优雅而健壮的解释型编程语言,它具有如下的特点: 易学 Python关键字少.结构简单.语法清晰.学习者可以在相对更短的时间内轻松上手. 易读 Python没有其它语言通常用来访问 ...
- 20172306 2018-2019-2 《Java程序设计与数据结构》第九周学习总结
20172306 2018-2019-2 <Java程序设计与数据结构>第九周学习总结 教材学习内容总结 无向图 图是由结点和这些结点之间的连接构成 就图来说,结点叫做顶点,结点之间的连接 ...
- 如何将一个excel表格的数据匹配到另一个表中
我们在操作excel表的时,有时需要将一个excel表中的数据匹配到另一个表中,那么就需要用到VLOOKUP函数,VLOOKUP函数是Excel中的一个纵向查找函数,VLOOKUP是按列查找,最终返回 ...
- 【mysql】:mysql性能优化总结
一.Mysql引擎概述 1.MyISAM存储引擎 MyISAM表是独立于操作系统的,这说明可以轻松地将其从Windows服务器移植到Linux服务器:每当我们建立一个MyISAM引擎的表时,就会在本地 ...
- GitHub学习途径
之前学习GitHub的一个pdf文件 作者是stormzhang 我觉得那个pdf教的很详细,我还没看完,正在学习中,学到了文件的clon和在本机如何更新GitHub的文件. 在此分享一下 下载链接h ...
- Python_day8
多态 class Animal(object): def run(self): print('animal is running') class Dog(Animal): def run(self): ...
- 突破内网限制上网(ssh+polipo)
最近到客户这里来做项目,发现客户对网络的把控实在严格,很多网站都不能访问到,搜索到的技术文档也屏蔽了.突然想到了FQ工具的原理,刚好自己也有台服务器在外头,部署个Polipo代理然后用ssh隧道连接. ...