Django_cookie_session
Cookie
一、Cookie介绍
Cookie是什么?
- Cookie是由服务器生成的,存储在浏览器端的少量数据(键值对)
- 服务器生成Cookie后,会在响应请求时发送Cookie数据给浏览器,浏览器接收到后会自动保存
- 浏览器再次请求服务器时,会自动上传该服务器生成的所有的Cookie
- Cookie是有过期时间的,默认关闭浏览器之后Cookie就会过期
- 每个域名下保存的Cookie的个数是有限制的(50个),不同浏览器保存的个数不一样;
- 每个Cookie保存的数据大小是有限制的(4K),不同的浏览器保存的数据大小不一样;
- Cookie是基于域名安全的:
- Cookie的存储是以域名的方式进行区分的;
- 每个网站只能读取自己生成的Cookie,而无法读取其它网站生成的Cookie;
- 浏览器请求某个网站时,会自动携带该网站所有的Cookie数据给服务器,但不会携带其它网站生成的Cookie数据。

二、Cookie操作:
在Django中Cookie的读写:
读取数据
request.COOKIES['键名']
或者:
request.COOKIES.get('键名')
- 保存数据
response.set_cookie('键名', count,max_age, expires)
- max_age是一个整数,表示在指定秒数后过期
- expires是一个datetime或timedelta对象,会话将在这个指定的日期/时间过期
- max_age与expires二选一
- 如果不指定过期时间,在关闭浏览器时cookie会过期
Session
一、Session介绍
- 一些重要敏感的数据(银行卡账号,余额,验证码...),应该存储在服务器端,而不是存储在浏览器,这种在服务器端进行状态数据保存的方案就是Session
- Session的使用依赖于Cookie,如果浏览器不能保存Cookie,那么Session则失效了
- django项目有session模块,默认开启session功能,会自动存储session数据到数据库表中
- Session也是有过期时间的,如果不指定,默认两周就会过期

二、Session的使用
1、开启session功能
在django项目,session功能默认是开启的;要禁用session功能,则可禁用下图中的session中间件:

2、session对象操作(request.session字典)
保存session数据(键值对)
request.session['键']=值
- 读取session数据
request.session.get('键',默认值)
- 清除session数据数据
request.session.clear()
或者:
request.session.flush()
- 删除指定的sessoin键值对数据(注意:键不存在会报错KeyError)
del request.session['键']
- 设置会话的超时时间,如果没有指定过期时间则两个星期后过期
request.session.set_expiry(value)
- 如果value是一个整数,会话将在value秒没有活动后过期。
- 如果value为0,那么用户会话的Cookie将在用户的浏览器关闭时过期。
- 如果value为None,那么会话永不过期。
三、session存储方式
Session数据可以存储在数据库、内存、Redis等,可以通过在项目的setting.py中设置SESSION_ENGINE项,指定Session数据存储的方式。
- 存储在数据库中,如下设置可以写,也可以不写,这是默认存储方式。
SESSION_ENGINE='django.contrib.sessions.backends.db'
- 存储在内存中:存储在本机内存中,如果丢失则不能找回,比数据库的方式读写更快
SESSION_ENGINE='django.contrib.sessions.backends.cache'
- 混合存储:优先从本机内存中存取,如果没有则从数据库中存取。
SESSION_ENGINE='django.contrib.sessions.backends.cached_db'
- 通过Redis存储session
Django_cookie_session的更多相关文章
- Django,COOKIES,SESSION完成用户登入
1.urls.py """Django_cookie_session URL Configuration The `urlpatterns` list routes UR ...
- django cookie and session
cookie和session 1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie的工作 ...
随机推荐
- Python爬虫 - 爬取百度html代码前200行
Python爬虫 - 爬取百度html代码前200行 - 改进版, 增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...
- MongoDB与CouchDB 全方位对比
http://blog.nosqlfan.com/html/1519.html 本文见于MongoDB官方网站,MongoDB与CouchDB 很相似,他们都是文档型存储,数据存储格式都是JSON型的 ...
- windows10不能修改hosts解决方案(亲测)
hosts文本解释: 有时候我们要破解一些软件与服务器通讯,所以通常都需要更改Hosts文件来达到目的,XP系统可以直接修改保存,但是Win10系统却提示没有权限去修改,那么我们要怎样办呢,我们修改的 ...
- 在cmd下运行Python脚本+如何使用Python Shell
原文:https://blog.csdn.net/flyfrommath/article/details/77447587?locationNum=2&fps=1
- Ocelot中文文档-请求聚合
Ocelot允许您指定聚合多个普通ReRoutes的Aggregate ReRoutes(聚合路由),并将其响应映射到一个对象中.一般用于当您有一个客户端向服务器发出多个请求,而这些请求可以合并成一个 ...
- require/exports 和 import/export 区别
零.区别 1.require/exports 是 CommonJS 的标准,适用范围如 Node.js 2.import/export 是 ES6 的标准,适用范围如 React 一.间接获取对象 ( ...
- 微信小程序之获取用户位置权限(拒绝后提醒)
微信小程序获取用户当前位置有三个方式: 1. wx.getLocation(多与wx.openLocation一起用) 获取当前的精度.纬度.速度.不需要授权.当type设置为gcj02 返回可用于w ...
- QUIC协议的分析,性能测试以及在QQ会员实践
WeTest 导读 你听过HTTPS.HTTP2.0.SPDY,但是这些应用层协议都是基于可靠的传输层协议TCP来实现的.那么,基于高效的UDP协议有没有一种相对可靠的应用层协议呢? Why QUIC ...
- cocos2dx中的坐标系统
一. (1)OpenGL坐标系 Cocos2D-x以OpenGL和OpenGL ES为基础,所以自然支持OpenGL坐标系.该坐标系原点在屏幕左下角,x轴向右,y轴向上. (2)屏幕坐标系 屏幕坐标系 ...
- CKEditor、UBB编辑器的使用总结
2018-04-08 22:07:16.188 ERROR 14728 --- [nio-8082-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Se ...