导读:今天首席CTO笔记来给各位分享关于djangocookies怎么用的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
Django-cookie
无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况。
比如我们在没引入cookie验证之前,我们输入 进入页面登录操作,理论上我们必须完成登录后才能进行后续操作,如果服务器不告诉浏览器就是把键值对交给浏览器,让浏览器与服务器建立关联。那么我们输入 同样也可以完成与页面的交互工作,从而失去了登录操作的意义。
一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的。
状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留。会话中产生的数据又是我们需要保存的,也就是说要“保持状态”。因此Cookie就是在这样一个场景下诞生。
Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息。
cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上Cookie,这样服务器就能通过Cookie的内容来判断这个是“谁”了。
我们使用Chrome浏览器,打开开发者工具。
设置cookie,rep是获取响应的对象
rep.set_cookie(key,value,...)
rep.set_signed_cookie(key,value,salt='加密盐', max_age=None, ...)
获取Cookie
request.COOKIES['key']
request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)
为了进一步理解cookie的用法,我们这边由浅到深举个案例
进入页面登录操作,登录成功后页面跳转去 并提示已登录成功,同时将cookie以键值对的方式交付给浏览器,当输入 时浏览器会判断如果有cookie的话就返回提示已登录成功页面,否则让用户重新登录,从而实现了login页面与home页面的关联。
由下图可知 时,因为没找到cookie,所以就跳转到 页面。正确登录后就返回到home页面
在实务中我们登录后要操作页面不限于home页面,还有很多页面,由于实现的功能是一样的(就是把多页通过cookie取得关联)这时我们需要做个函数装饰器,当调用def home(resquest)时第一时间调用函数装饰器里对应的函数。
第一步:函数装饰器
第二步:
我们输入 时,因为浏览器找不到cookies,所以按照redirect('/login/?next={}'.format(next_url)),跳去
。
新手请教django2.2.3设置cookie返回值为null
set_cookie()方法没有返回值。调用Response.set_cookie()即可给response对象设置cookie。
res = HttpRespnse('OK')
res.set_cookie('abc', 'abc')
return res
python django下 cookies在哪里设置超时时间
python django下 cookies在哪里设置超时时间
不知道你是不是用set_cookie这个函数设置了cookie呢?
HttpResponse.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=True)
这个函数里面,max_age就是cookie的超时时间,是以秒为单位的。
也可以用expires设置绝对时间做为有效期,格式:"Wdy, DD-Mon-YY HH:MM:SS GMT",expires也可以是datetime.datetime的对象
结语:以上就是首席CTO笔记为大家整理的关于djangocookies怎么用的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于djangocookies怎么用的相关内容别忘了在本站进行查找喔。