COOKIE操作
cookie机制,是采用的是在客户端保持状态的方案
session机制,是采用的在服务器端保持状态的方案
概述:
会话控制用来保持用户的状态
原因:
http协议是无状态的协议,每一次链接都是一次新的会话
cookie值的存储
cookie存储在客户端浏览器上
一般会限制存储cookie的个数为20个(一个站点)
并且单个cookie 保存值大小不能超过4kb
存储在浏览器上为明文存储,所以不安全
描述cookie存储过程:
请求
客户端 ---》服务器
设置cookie
客户端 《--- 服务器
带着cookie请求服务器
客户端 ---》服务器
(1)设置cookie:
Reponse.set_cookie(
key,键
value,值
max_age,多久后过期,时间为秒
expires,过期时间,为具体时间
path,生效的路径
domain,生效域名
secure,https传输时应设置为Ture
httponly 仅http传输 不能使用js获取cookie
)
实例:
def set_cookie(req):
#实例化响应
res = HttpResponse('设置cookie')
# 设置cookie 名字为lucky
res.ser_cookie('name','lucky')
#相应(如果设置失败,查看一下,当前设置cookie的响应 是否进行了相应)
return res
路由:
url(r'^set_cookie/$',test_cookie.set_cookie,name='set_cookie')
(2)设置cookie并设置过期时间
实例:
def set_cookie_lifetime(req):
#实例化响应对象
res = HttpResponse('设置cookie并设置过期时间')
val = req.GET.get('name','lucky' )
# 设置过期时间单位为秒
#res.ser_cookie('name',val,max_age=20)
res.ser_cookie('name',val,expires=30)
return res
路由:
url(r'^set_cookie_lifetime/$',test_cookie.set_cookie_lifetime,name='set_cookie_lifetime')
(3)获取cookie
实例:
def get_cookie(req):
#打印所有cookie值(包含所有cookie键值对字典)
print(req.COOKIES)
# 获取key为name的cookie值
val = res.COOKIES.get('name')
return HttpResponse('name的值为:{}'.format(val))
路由:
url(r'^get_cookie/$',test_cookie.get_cookie,name='get_cookie')
(4)删除cookie
实例:
def del_cookie(req):
#实例化响应对象
res = HttpResponse('删除cookie')
# 删除key为name的cookie
res.delete_cookie('name')
# 可以通过再次设置的方式清除cookie(覆盖之前的name 刚设置完就死掉)
res.ser_cookie('name',None,max_age=0)
return res
路由:
url(r'^del_cookie/$',test_cookie.del_cookie,name='del_cookie')