Cookie
什么是Cookie?
Cookie具体指的是一小段信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息。
特性
- 服务器让浏览器进行设置
- 下次访问时自动携带对应的Cookie
设置Cookie
1 #通过response对象 2 response.set_cookie('is_login','1') #其本质是加了一个相应头 Set-Cookie : is_login=1;Path=/ 3 response.set_signed_cookie(key,value,salt='加密盐') 4 #直接指定相应头 5 response['Set-Cookie'] = 'is_login=1;path=/'
获取Cookie
#获取Cookie request.COOKIES[key] request.COOKIES.get(key) request.get_signed_cookie(key,salt='加密盐',default='默认值')
删除Cookie
1 response.delete_cookie(key)
Session
什么是Session
Session是保存在服务器上的一组组键值对,其存在必须依赖于Cookie
为什么要有Session
- Cookie保存在浏览器上,不安全
- 浏览器对Cookie的大小有一定的限制
设置Session
1 request.session[key] = value
获取Session
1 request.session[key] 2 request.session.get[key]
删除Session
1 del request.session[key] 2 request.session.pop(key) 3 request.session.delete() #删除所有的session数据,不删除对应的cookie 4 request.session.flush()#删除所有的session数据,同时删除对应的cookie
Session的其它方法
1 request.session.set_expiry(value) #设置超时时间 2 request.session.clear_expired()#清除已经失效的session数据
Session的相关全局配置
1 from django.conf import global_settings 2 SESSION_COOKIE_NAME = 'sessionid' #Cookie的名字 3 SESSION_COOKIE_AGE = 60*60*24*7*2#超时时间 默认为两周 4 SESSION_SAVE_EVERY_REQEST=True#每次访问都保存Session数据 5 SESSION_EXPIRE_AT_BROWSER_CLOSE=True#关闭浏览器 Cookie失效 6 SESSION_ENGINE='django.contrib.sessions.backends.db'#引擎 默认保存在数据库 还可以保存在 缓存 缓存+数据库 文件 加密Cookie