简单操作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) 保存在文件系统 ...
随机推荐
- C# Common Code
DatePicker 控件日期格式化,可以在App.xaml.cs中添加下面代码 方法一 不推荐: Thread.CurrentThread.CurrentCulture = (CultureInfo ...
- MySQL数据库(增删改查语句)
MySQL数据库(增删改查语句)一.登录数据库:----> mysql -uroot -proot;(对应用户名和密码)二.SQL语句: 数据定义语言DDL 用来定义数据库.表.列,关 ...
- C运算符
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号. C 语言内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符.关系运算符.逻辑运算符.位运算符.赋值运算符.杂项运算符 C 中的运算符优先 ...
- MySQL索引优化步骤总结
在项目使用mysql过程中,随着系统的运行,发现一些慢查询,在这里总结一下mysql索引优化步骤 1.开发过程优化 开发过程中对业务表中查询sql分析sql执行计划(尤其是业务流水表),主要是查看sq ...
- js调用后台方法
一种方法是使用ajax调用$.ajax({type: "POST",//传输方式url: "",//action路径data: "",//传 ...
- c语言知识
1. 指针 https://blog.csdn.net/lwbeyond/article/details/6180640 http://www.cnblogs.com/lvyahui/p/696528 ...
- Web开发的小知识点
ServletConfig:用于读取配置文件信息 ServletContext:这是一个容器,代表一个web应用程序,多个Servlet可以通过这个容器共享数据信息(注意:这样的数据共享有线程安全问题 ...
- C#学习笔记14——TRACE、DEBUG和TRACESOURCE的使用以及日志设计
Trace.Debug和TraceSource的使用以及日志设计 .NET Framework 命名空间 System.Diagnostics 包含用于跟踪执行流程的 Trace.Debug 和 ...
- 一个jar包冲突引起的StackOverflowError
项目运行中错误信息:java.lang.IllegalStateException: Unable to complete the scan for annotations for web appli ...
- Codeforces Round #548 (Div. 2) E 二分图匹配(新坑) or 网络流 + 反向处理
https://codeforces.com/contest/1139/problem/E 题意 有n个学生,m个社团,每个学生有一个\(p_i\)值,然后每个学生属于\(c_i\)社团, 有d天,每 ...