Cookie和Session

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)
View Code

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
原文地址:https://www.cnblogs.com/muchengQ/p/11505914.html