django: cookies和session
cookies和session:为了保持会话状态的两种存储技术。
-
cookies:
保存在客户端浏览器的存储空间上,在浏览器上以键值对的形式进行存储,键和值都是以ascii字符串的形式存储,存储的数据带有生命周期。
cookies中的数据是按照域(地址栏里的域名)来存储隔离的,不同的域之间无法访问。
cookies的内部的数据会在每次访问此网址的时候都会携带到服务器端,如果cookies过大会降低响应速度。存储cookies:HttpResponse.set_cookie(key,value='',max_age=None,expirs=None) 删除cookies:HttpResponse.delete_cookie(key):删除指定的key的cookie,若key不存在则什么也不发生 获取cookies:通过request.COOKIES绑定的字典(dict)获取客户端的COOKIES数据:value=request.COOKIES.get('cookies名','默认值')
-
session:
把所有的状态数据保存在服务器上。
客户端访问服务器时,服务器会创建为每个客户端传建一个独立的session,并把sessionID发送给客户端,客户端浏览器将sessionID保存在自己的cookies中,之后当浏览器访问服务器时,服务器就会检查传上来的cookies中的sessionID。因此使用session时需要在浏览器客户端启动cookie。
对session的操作类似于字典:保存session的值到服务器:request.session['KEY']=VALUE; 获取session的值:value=request.session.get('KEY',默认值); 删除:del request.session['KEY']
Django中的session数据存储在数据库中,django_session表是单表设计,且该表数据量持续增加。session数据过多时,可以使用python manage.py clearsessions 删除过期的数据。