导读:本篇文章首席CTO笔记来给大家介绍有关django怎么往cookie中存数据的相关内容,希望对大家有所帮助,一起来看看吧。
在java中如何用cookies保存数据?
一、java保存写入Cookie
JSP程序片段如下:
//保存写入Cookie
<%
String cookieName="Sender";
Cookie cookie=new Cookie(cookieName, "Test_Content");
cookie.setMaxAge(10); //存活期为10秒
response.addCookie(cookie);
%>
二、读取出Cookie
Cookie文件创建好后,自然还需要用户把它读出来,代码片段如下:
<%
Cookie cookies[]=request.getCookies(); //读出用户硬盘上的Cookie,并将所有的Cookie放到一个cookie对象数组里面
Cookie sCookie=null;
String svalue=null;
String sname=null;
for(int i=0;icookies.length-1;i++{ //用一个循环语句遍历刚才建立的Cookie对象数组
sCookie=cookies; //取出数组中的一个Cookie对象
sname=sCookie.getName(); //取得这个Cookie的名字
svalue=sCookie.getValue(); //取得这个Cookie的内容
%>
<%
}
%>
name value
<%=name%> <%=svalue%>
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)),跳去
。
Django中cookie的设置和获取以及需要注意的问题
1、cookie的设置
2、cookie的读取
3、cookie使用时注意的问题
1、我们在设置cookie时,需要注意的地方:
必须指定编码的原因是当username为变量时,不指定变量会报 AttributeError: 'NoneType' object has no attribute 'split' 异常
2、在读取cookie时,需要注意的地方:
假设,第1步中我们设置的cookie值等于"abc123",那么在2中读取到的就是:b'abc123'这样的值,其类型为字符串,在这里,我们就不能直接使用拿到的usercookie当1中的username用,而是要使用字符串的索引切片对其进行处理,将其还原为1中内容,才可以使用,方法之一如下:
django cookie和session的区别和用法
cookie 和session 的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用cookie。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:
将登陆信息等重要信息存放为session
其他信息如果需要保留,可以放在cookie中
如何用js向cookie中保存数据、取数据?
用js向cookie中保存数据、获取数据的方法如下:
function GetCookieVal(offset)
//获得Cookie解码后的值
{
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
//---------------------------
function SetCookie(name, value)
//设定Cookie值
{
var expdate = new Date();
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (argc 2) ? argv[2] : null;
var path = (argc 3) ? argv[3] : null;
var domain = (argc 4) ? argv[4] : null;
var secure = (argc 5) ? argv[5] : false;
if(expires!=null) expdate.setTime(expdate.getTime() + ( expires * 1000 ));
document.cookie = name + "=" + escape (value) +((expires == null) ? "" : ("; expires="+ expdate.toGMTString()))
+((path == null) ? "" : ("; path=" + path)) +((domain == null) ? "" : ("; domain=" + domain))
+((secure == true) ? "; secure" : "");
}
//---------------------------------
function DelCookie(name)
//删除Cookie
{
var exp = new Date();
exp.setTime (exp.getTime() - 1);
var cval = GetCookie (name);
document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
}
//------------------------------------
function GetCookie(name)
//获得Cookie的原始值
{
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i clen)
{
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return GetCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
SetCookie("username1",99);
alert(GetCookie("username1"));
结语:以上就是首席CTO笔记为大家整理的关于django怎么往cookie中存数据的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~