Cookie

【Cookie】HTTP被设计为”无状态”, 在一次请求和下一次请求之间没有任何状态保持,我们无法根据请求的任何方面(IP地址,用户代理等)来识别来自同一人的连续请求。我们会从较低的层次(cookies)开始,然后过渡到用高层的工具来搞定会话,用户和注册的问题。
Cookies
cookies 是浏览器为 Web 服务器存储的一小段信息。 每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies
原理

GET / HTTP/1.1 Host: google.com

HTTP/1.1 200 OK Content-Type: text/html Set-Cookie: PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com Server: GWS/2.1

GET / HTTP/1.1 Host: google.com Cookie: PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671

存取cookie
取cookie,每一个HttpRequest 对象都有一个COOKIES 对象,该对象的行为类似一个字典,你可以使用它读取任何浏览器发送给视图(view)的cookies
def show_color(request): if "favorite_color" in request.COOKIES: return HttpResponse("Your favorite color is %s" %request.COOKIES["favorite_color"]) else: return HttpResponse("You don't have a favorite color.")

写cookies,你需要使用 HttpResponse对象的 set_cookie()方法。 这里基于 GET 参数来设置 favorite_color
def set_color(request): if "favorite_color" in request.GET:# Create an HttpResponse object... response = HttpResponse("Your favorite color is now %s" %request.GET["favorite_color"])# ... and set a cookie on the response response.set_cookie("favorite_color", request.GET["favorite_color"])return responseelse: return HttpResponse("You didn't give a favorite color.")

你可以给 response.set_cookie() 传递一些可选的参数来控制cookie的行为
参数 缺省值 描述
max_age none cookie需要延续的时间(以秒为单位)
expires none cookie失效的实际日期/时间
path / cookie生效的路径前缀
domain none 这个cookie有效的站点
False false 如果设置为 True,浏览器将通过HTTPS

    推荐阅读