cookie
cookie是什么?
保存在本地浏览器的键值对。
为什么要有cookie?
HTTP是无状态的,服务器返回响应时保存在浏览器上,保存格式是一组组键值对。
Django中cookie的使用方法:
rep = redirect('/home/')
rep = set.coolie(key, value, max_age=60*60*24*7) # 明文cookie,有效期7天。
rep = set.signet.cookie(key, value, salt=' ', max_age=60) # 加盐cookie, 有效期60秒。
获取Cookie
request.COOKIES # 获取请求中的Cookie数据,数据格式是大字典
request.COOKIES[key] # 不推荐这种写法
request.COOKIES.get(key, "默认值") # 推荐使用这种方法取值
request.GET # 获取URL里面的参数
request.POST # 获取POST请求的参数
request.FILES # 上传文件的数据
request.get_signed_cookie(key, default="默认值", salt="") # 获取加盐的Cookie
删除Cookie(用于注销)
rep = redirect('/home/')
rep.delete_cookie("key")
session
session是什么?
保存在服务器的键值对,依赖cookie。
为什么要有session?
cookie的数据保存在浏览器上,不安全。
cookie数据长度有限制。
session的使用方法:
设置Session
request.session[key] = value
request.session.setdefault(key, value) # 有就啥都不干,没有就赋值
获取Session
request.session[key]
request.session.get(key) # 推荐
删除Session
request.session.delete()
request.session.flush() # 删除Cookie和Session
清空已经过期的session数据
request.session.clear_expired()
设置Session过期时间
request.session.set_expiry(过期时间)
Django中Session的配置项
1. 配置写在settings.py中
3. 几个常用的配置项
1. 全局设置Session的过期时间
SESSION_COOKIE_AGE = 1209600 # 默认两周
2. 设置每次请求来都刷新过期时间
SESSION_SAVE_EVERY_REQUEST = True