首页>>后端>>Python->django如何保存cookie(django 外键 保存)

django如何保存cookie(django 外键 保存)

时间:2023-12-09 本站 点击:0

导读:今天首席CTO笔记来给各位分享关于django如何保存cookie的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

django cookie和session的区别和用法

cookie 和session 的区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗

考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能

考虑到减轻服务器性能方面,应当使用cookie。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5、所以个人建议:

将登陆信息等重要信息存放为session

其他信息如果需要保留,可以放在cookie中

如何保存cookie?望详细解释.

Cookie

一些网站会在您的计算机上的以小文本文件存储信息。这种文件称为 Cookie。

有几种类型的 Cookie,您可以选择是否允许在计算机上保存一部分、不保存或保存所有的 Cookie。如果不允许 Cookie,就不能查看某些站点或者利用自定义功能(例如本地新闻和天气,或者股票查询)。

如何使用 Cookie

Cookie 是由 Internet 站点创建的、将信息存储在计算机上的文件,例如访问站点时的首选项。例如,如果您在某家航空公司的站点上查阅了航班时刻表,该站点可能就创建了包含您的旅行计划的 Cookie。也可能只记录了您在该站点上曾经访问过的页面,由此帮助您下次访问该站点时自定义查看。

Cookies 也可以存储个人可识别信息。个人可识别信息是可以用来识别或联系您的信息,例如您的姓名、电子邮件地址、家庭或工作单位地址,或者电话号码。然而,网站只能访问您提供的个人可识别信息。例如,除非您提供电子邮件名称,否则网站将不能确定您的电子邮件名称。另外,网站不能访问计算机上的其他信息。

一旦将 cookie 保存在计算机上,则只有创建该 cookie 的网站才能读取它。

使用 Cookie 时的选择

Internet Explorer 允许使用 Cookie;但是,可以更改隐私设置来指定 Internet Explorer 将 Cookie 放到计算机上之前给出提示(让您决定允许或阻止 Cookie);或者防止 Internet Explorer 接受任何 Cookie。

可以删除的,只是以后你再访问某些网站的时候用户名密码什么的需要重新输入,网站不会记住了。

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中内容,才可以使用,方法之一如下:

python如何保存cookie到本地

python如何保存cookie到本地的方法:

第一次访问页面后,Server可将Cookie信息加入HTTP Header返回给浏览器,浏览器会自动将这些信息保存在本地;

当再次访问相同域名时,浏览器将对应Cookie信息随请求一起发送,Server端可读取这些信息进行处理。

Cookie可设置过期时间,到期后由浏览器自动删除;

当我们要返回页面时,首先输出如下:

[python] view plaincopy

print "Content-type: text/plain\n"

它其实是一个HTTP Header, 连续碰到两个换行表示HTTP Header部分结束,剩余部分将被做为数据处理;

包含了Cookie后输出大致如下:

[python] view plaincopy

print "Content-Type: text/html"

print "Set-Cookie: session=12345"

print # 多加一个换行表示HTTP Header部分结束

代码:

setcookie.py

[python] view plaincopy

#!/usr/bin/env python

import Cookie

import datetime

import random

expiration = datetime.datetime.now() + datetime.timedelta(days=30)

cookie = Cookie.SimpleCookie()

cookie["session"] = random.randint(0,1000000000)

cookie["session"]["domain"] = "localhost"

cookie["session"]["path"] = "/"

cookie["session"]["expires"] = \

expiration.strftime("%a, %d-%b-%Y %H:%M:%S PST")

print "Content-type: text/plain"

print cookie.output()

print

print "Cookie set with: " + cookie.output()

getcookie.py

[python] view plaincopy

#!/usr/bin/env python

import Cookie

import os

print "Content-type: text/plain\n"

try:

cookie = Cookie.SimpleCookie(os.environ["HTTP_COOKIE"])

print "session = " + cookie["session"].value

except (Cookie.CookieError, KeyError):

print "session cookie not set!"

无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况。

比如我们在没引入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)),跳去

结语:以上就是首席CTO笔记为大家整理的关于django如何保存cookie的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/20864.html