# 用户发来数据带来所有COOKIES 这个cookie是字典
request.COOKIES
# 获取字典 获取cookie
request.COOKIES["username111"]
# get方法获取字典 cookie
request.COOKIES.get("username111")
服务器端可以给用户写cookie 设置cookie
# 设置cookie response = render(request,"index.html") response = redirect("/index/") # 返回用户cookie # set_cookie()第一个值是key 第二个值是value # 给用户设置cookie也是key 和value response.set_cookie("key","value") return response
用户登录,登录成功之后只要不关闭浏览器,cookie一直生效。后台重启,cookie一直存在
设置cookie时 后面不加任何参数,表示关闭浏览器时候,cookie就失效了,再打开浏览器就要重新登录了
rep = HttpResponse(...) 或 rep = render(request, ...) rep.set_cookie(key,value,...) 参数: key, 键 value='', 值 max_age=None, 超时时间 expires=None, 超时时间(IE requires expires, so set it if hasn't been already.) path='/', Cookie生效的路径,/ 表示根路径,特殊的:跟路径的cookie可以被任何url的页面访问 domain=None, Cookie生效的域名 secure=False, https传输 httponly=False 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)
max_age 设置cookie超时时间 , 例如 max_age=10 10秒后cookie过期 登录状态只能保存10秒
# 设置cookie response = render(request,"index.html") response = redirect("/index/") # 返回用户cookie # set_cookie()第一个值是key 第二个值是value # 给用户设置cookie也是key 和value # 设置cookie,关闭浏览器是失效 response.set_cookie("key","value") #设置cookie 超时时间,N秒之后失效 response.set_cookie("key", "value",max_age=1000) return response
expires 也是超时时间,区别是max_age以秒为单位,expires是用datetime实现 超时时间
导入datetime模块
设置5秒超时时间
# 利用datetime1的超时时间,到哪个时间节点过期 import datetime # datetime.datetime.utcnow() 获取当前时间 current_date = datetime.datetime.utcnow() # 设置了 时间差 设置这个时间是5秒过期 current_date = current_date + datetime.timedelta(seconds=5) response.set_cookie("key", "value", current_date) return response
所以设置cookie超时时间 两张方法 expires,max_age
path='/' 生效路径 设置cookie默认是'/' 代表允许网站任何url 都可以访问cookie
如果设置path='/index/' cookie只能index页面使用,其他url页面不能使用cookie
domain=none 设置生效cookie的域名 只能是2级域名