[django] cookie

Cookie机制:将少量数据存放在客户端比如浏览器中,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息。

  1. 设置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: '/' }); 
    
  2. 获取Cookie:

    # 普通
    request.COOKIES.get('key')
    # 加盐
    request.get_signed_cookie('k',salt='moke')
    
  3. 删除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)
    

cookie + session

posted @ 2019-10-03 19:47  Moke丶青  阅读(84)  评论(0编辑  收藏  举报