cookie
# 设置cookieobj = HttpResponse('')obj.set_cookie(key,value)# 获取cookie,是个字典cookie = request.COOKIES# 删除cookie:obj.delete_cookie('key)
加盐cookie
# 设置cookierep = HttpResponse('')rep.set_signed_cookie(key,value,salt='加密盐')# default:默认值 salt:加密盐 max_age:后台控制过期时间# 获取cookie,是个字典request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)
- key : 键
- value : 值
- max_age = None, 超时时间 cookie需要延续的时间(以秒为单位)如果参数是 None ,这个cookie会延续到浏览器关闭为止
- expires = None, 超时时间(浏览器请求失效,)
- path='/', Cookie生效的路径,/ 表示根路径,特殊的:根路径的cookie可以被任何url的页面访问,浏览器只会把cookie回传给带有该路径的页面,这样可以避免将cookie传给站点中的其他的应用。
- domain=None, Cookie生效的域名 你可用这个参数来构造一个跨站cookie。如果该参数设置为 None ,cookie只能由设置它的站点读取
- secure=False, 浏览器将通过HTTPS来回传cookie
- httponly=False 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)
session
# 设置值request.session['key']='value'
执行三步操作
- 生成随机字符串
- 去数据库存储
- 写入cookie(set_cookie('sessionid','随机字符串'))
如果设置多个,它会以字典的形式存储到session表中的session_data中
# 取值name=request.session['name']
执行操作:
- 取到cookie的随机字符串
取session表中根据随机字符串查询,查询出session_data这个字典,然后把字典中name返回
# 删除值
request.session.delete() #既删除cookie,又删除数据库 request.session.flush()
执行操作
- 取出cookie,随机字符串,去数据库删除随机字符串是当前值的记录
session的其他属性
# 设置默认值request.session.setdefault('k1',123) # 存在则不设置# 取到随机字符串,request.session.session_key #内部实现代码 request.COOKIES.get('sessionid')# 清空失效的sessionrequest.session.clear_expired()# 校验sessionid是否存在request.session.exists("session_key")