- Cookie
- Session
Cookie
浏览器请求服务器是无状态的,它的每一次请求对于服务器来说都是新的,服务器默认不会保存用户的状态数据。但很多时候,服务器需要保存用户的一些状态数据,比如用户是否登录过,用户浏览过哪些商品等。解决方案,有以下两种:
- cookie
- session
cookie及特点
- Cookie是由服务器(网站)生成的,存储在浏览器端的 键值对数据(通常经过加密)
- 在响应请求时,服务器会把生成 Cookie数据 发给浏览器,浏览器会自动保存(前提:浏览器开启了cookie功能)
- 浏览器请求服务器(网站)时,会自动上传该服务器(网站)生成的所有Cookie
- 每个网站只能访问到自己生成的cookie,无法访问其它网站(域)生成的cookie
Django中Cookie的保存和读取
保存cookie: 通过HttpResponse响应对象的set_cookie方法保存
response.set_cookie('键', '值',max_age) # max_age 有效期,一个整数,单位为秒,表示在多长时间后失效 # Cookie默认有效期: 如果不指定有效期,或者max_age值为None,则关闭浏览器后Cookie数据就会过期
读取cookie: 通过HttpRequest请求对象的COOKIES属性(字典类型)读取
request.COOKIES['键'] # 或者: request.COOKIES.get('键')
案例
需求:
访问 http://127.0.0.1:8000/set_cookie 界面时,保存cookie数据
访问 http://127.0.0.1:8000/get_cookie 界面时,读取cookie数据
实现参考:
urlpatterns = [ ... url(r'^set_cookie$', users.views.set_cookie), url(r'^get_cookie$', users.views.get_cookie), ]