[django] cookie
Cookie机制:将少量数据存放在客户端比如浏览器中,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息。
-
设置cookie
rep = HttpResponse(...) rep = render(request, ...) # 普通 rep.set_cookie(key,value,...) 例:rep.set_cookie('session_id','1234',max_age=10) # 加盐 rep.set_signed_cookie(key,value,salt='加密盐', max_age=None, ...)
参数
set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False) key: cookie的name value:cookie的值 max_age:cookie存活时间,单位是秒 expires:具体过期时间 path:cookie的访问路径,只有在某个路径下访问 domain:域名,只有在某个域名下访问 secure:安全,https传输 httpoly:如果为True那么js就不能获取cookie,**只能http协议传输**,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)
由于cookie保存在客户端的电脑上,所以,JavaScript和jquery也可以操作cookie。
<script src='/static/js/jquery.cookie.js'></script> $.cookie("list_pager_num", 30,{ path: '/' });
-
获取Cookie:
# 普通 request.COOKIES.get('key') # 加盐 request.get_signed_cookie('k',salt='moke')
-
删除Cookie:
def delete_cookie(request): key = request.GET.get('key') response = HttpResponse("删除%s的cookie" % key) response.delete_cookie(key) return response
调用response里面的delete_cookie(key)删除cookie,实际上就是将此cookie设为过期
cookie截止时间失效
import datetime current_date = datetime.datetime.utcnow() current_date = current_date + datetime.timedelta(seconds=5) response.set_cookie('username111',"value",expires=current_date)