Cookie和Session的原理及在Django中的作用
Cookie和Session一样,是django中用于视图保持状态的方案之一。由于HTTP被设计为”无状态”,每次请求都处于相同的空间中。 在一次请求和下一次请求之间没有任何状态保持,我们无法根据请求的任何方面(IP地址,用户代理等)来识别来自同一人的连续请求。但是还有保证用户登陆过之后,还要保证登陆了的用户不需要再重复登陆,就能够访问我网站的其他的网址的页面,对不对,但是http无状态啊,怎么保证这个事情呢?此时就要找cookie和session了。
1.cookie和session的原理
cookie的工作原理是:浏览器访问服务端,带着一个空的cookie,然后由服务器产生内容,浏览器收到相应后保存在本地;当浏览器再次访问时,浏览器会自动带上Cookie,这样服务器就能通过Cookie的内容来判断这个是“谁”了。
cookie 是在浏览器端保存键值对数据,而 session 是在服务器端保存键值对数据 session 的使用依赖 cookie:在使用 Session 后,会在 Cookie 中存储一个 sessionid 的数据,每次请求时浏览器都会将这个数据发给服务器,服务器在接收到 sessionid 后,会根据这个值找出这个请求者的 Session。
2.如何设置cookie和session
1)设置cookie的方法
格式:HttpResponse().set_cookie(键名,对应的值,过期时间)
2)设置session的方法
首先需要在setting.py中设置
①MIDDLEWARE_CLASSES 确保其中包含以下内容:
'django.contrib.sessions.middleware.SessionMiddleware',
②INSTALLED_APPS 是包含
'django.contrib.sessions',
然后设置session的格式:
request.session[key] = value
3.如何查询cookie和session
1)查询cookie的方法
格式:value = request.COOKIES["cookie_key"]
2)查询session的方法
格式:request.session.get(key,default=None)
4.如何删除cookie和session
1)删除cookie的方法
格式:response.delete_cookie("cookie_key")
2)删除session的方法
格式:del request.session[key]