会话cookies和session

会话cookies和session

会话

定义:

从打开浏览器访问一个网站,到关闭浏览器结束此次访问,称之为一次会话

HTTP协议是无状态的,导致会话状态难以保持

试想一下,如果不保持会话状态,在电商网站购物的场景体验?

Cookies和Session就是为了保持会话状态而诞生的两个存储技术

cookies

cookies是保存在客户端浏览器上的存储空间

Cookies特点

cookies 在浏览器上是以键-值对的形式进行存储的,键和值都是以ASCII字符串的形存储(不能是中文字符串)

存储的数据带有生命周期

cookies中的数据是按域存储隔离的,不同的域之间无法访问

cookies的内部的数据会在每次访问此网址时都会携带到服务器端,如果cookies过大会降低响应速度

Cookies的使用-存储

HttpResponse.set_cookie(key, value=”,max_age=None, expires=None)
		key:cogkie的名字
		value:cookie的值
		max_age:cookie存活时间,秒为单位
		expires:具体过期时间
		当不指定max age和expires 时,关闭浏览器时此数据失效

Cookies的使用-删除&获取

删除Cookies

HttpResponse.delete_cookie(key)
删除指定的key 的Cookie。 如果key 不存在则什么也不发生

获取Cookies

通过request.COOKIES 绑定的字典(dict) 获取客户端的 COOKIES数据
value = request.COOKIES.get('cookies名','默认值')
session

session定义

session是在服务器上开辟一段空间用于保留浏览器和服务器交互时的重要数据

实现方式

使用 session 需要在浏览器客户端启动 cookie,且在cookie中存储sessionid

每个客户端都可以在服务器端有一个独立的Session

注意:不同的请求者之间不会共享这个数据,与请求者一一对

session 初始配置

settings.py中配置session
1,向INSTALLED APPS 列表中添加:

INSTALLED_APPS = [ 

#启用 sessions 应用
'django.contrib.sessions',
]

2,向MIDDLEWARE 列表中添加:

MIDDLEWARE = [

# 启用 Session 中间件

'django.contrib.sessions .middleware.SessionMiddleware',
]

session的使用

session对于象是一个类似于字典的SessionStore类型的对象,可以用类拟于字典的方式进行操作
session 能够存储如字符串,整型,字典,列表等。

1,保存 session 的值到服务器

request.session[KEYT = VALUEl

获取session的值

value = request.session['KEY']
value = request.session.get( 'KEY',默认值)

删除session

del request.session['KEY']

settings.py中相关配置项

1.SESSION COOKIE AGE

作用: 指定sessionid在cookies中的保存时长(默认是2周),如下

	例如: SESSION_COOKIE AGE = 60 *60*24*7*22,

2.SESSION EXPIRE AT BROWSER CLOSE = True

设置只要浏览器关闭时,session就失效(默认为False)

注意: Django中的session数据存储在数据库中,所以使用session前需要确保已经执行过migrate

Django session的问题

1,django_session表是 单表设计; 且该表数据量持续增持【浏览器故意删掉sessionid&过期数据未删除】

2,可以每晚执行 python3 manage.py clearsessions(该命令可删除已过期的session数据)

Cookies 和 session对比

种类 存储 安全性
Cookies 浏览器 相对不安全
session 服务器 相对安全

你可能感兴趣的:(Django,数据库,django)