码迷,mamicode.com
首页 > 其他好文 > 详细

django框架中的cookie与session

时间:2019-09-23 13:31:42      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:one   setting   大小限制   引入   存储   安装   存储方式   的区别   http   

cookie
因为http是一个无状态协议,无法记录用户上一步的操作,所以需要状态保持。
cookie和session的区别:
1.cookie是保存在浏览器本地的,所以相对不安全。cookie是4k的大小,最多保存20条(因为最原始的浏览器的本地是很小的,只是一个历史数据,但是其实是不精确的),默认的过期时间是14天。
2.session是保存在服务器的,是相对安全的,session依赖于cookie,sessionid保存在cookie中,理论上无大小限制。
3.相同点:都是实现状改保持,都是有服务器产生的,都有过期时间,都可以自己定义过期时间。

1.设置cookie
在响应里面设置cookie
HttpResponse.set_cookie(cookie名, value=cookie值, max_age=cookie有效期)

?技术图片

 

 

2.读取cookie

可以通过HttpRequest对象的COOKIES属性来读取本次请求携带的cookie值。request.COOKIES为字典类型。

技术图片

 

 session
session的理解需要从两个方面去理解
广义上:session机制 —会话,用于记录多次http请求之间的关系,关系就是状态数据
狭义上:session数据— 保存session机制状态的数据。
1.启用session
Django中是默认启用session的,在setting中中间件已经设置好的,如果禁用,就删掉或注释。

技术图片

 

 2.存储方式
2.1数据库存储
flask把默认情况下的session放在cookie中,也就是浏览器中
SESSION_ENGINE=‘django.contrib.sessions.backends.db’
默认存储在数据库中的存储方式
如果存储在数据库中还需要在INSTALLED-APPS配置中安装session的app

技术图片

 

 

?在数据库表中就可以看到一个django_session表

2.2本地缓存
存储在本机内存中,如果丢失则不能找回,比数据库的方式读写更快。
SESSION_ENGINE=‘django.contrib.sessions.backends.cache’
保存本地的问题:
在多机情况下存在跨机访问的问题

多个服务器保存一份代码的原因:
为了保证并发量
QPS:每秒的请求次数
防止宕机:不是代码可以解决的问题,用到redis里面的哨兵机制。

2.3混合存储
优先从本机内存中存取,如果没有则从数据库中存取。
SESSION_ENGINE=‘django.contrib.sessions.backends.cached_db’

2.4redis
1.安装扩展
pip install django-redis
引入的这个扩展可以直接当做是session的后端来使用
2.配置
在setting.py中配置如下内容
本质就是在本地缓存的基础上增加了一个后端的配置,

技术图片

 

 通过HttpRequest对象的session属性进行会话的读写操作。
1)以键值对的格式写session。
request.session[‘键’]=值
2)根据键读取值。
request.session.get(‘键’,默认值)
3)清除所有session,在存储中删除值部分。
request.session.clear()
4)清除session数据,在存储中删除session的整条数据。
request.session.flush()
5)删除session中的指定键及值,在存储中只删除某个键及对应的值。
del request.session[‘键’]
6)设置session的有效期
request.session.set_expiry(value)
• 如果value是一个整数,session将在value秒没有活动后过期。
• 如果value为0,那么用户session的Cookie将在用户的浏览器关闭时过期。
• 如果value为None,那么session有效期将采用系统默认值,默认为两周,可以通过在settings.py中设置SESSION_COOKIE_AGE来设置全局默认值。(以秒为单位)

django框架中的cookie与session

标签:one   setting   大小限制   引入   存储   安装   存储方式   的区别   http   

原文地址:https://www.cnblogs.com/shengguorui/p/11571796.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!