我正在开发一个Django项目。我希望在用户登录或注销后保持UI首选项。
所以我想使用cookie。但我不确定Python中的request.COOKIES
和JS中的document.cookie
是否相同。
我的意思是,如果我从JS或Django视图获取和设置cookie值,它是否相同。
希望我的问题清楚明了。我对cookie这个主题有点陌生。
谢谢。
我正在开发一个Django项目。我希望在用户登录或注销后保持UI首选项。
所以我想使用cookie。但我不确定Python中的request.COOKIES
和JS中的document.cookie
是否相同。
我的意思是,如果我从JS或Django视图获取和设置cookie值,它是否相同。
希望我的问题清楚明了。我对cookie这个主题有点陌生。
谢谢。
request.COOKIES
和document.cookie
包含相同的数据集;但是,获取和设置cookie值的方法完全不同。
request.COOKIES
是Python中的字典,您可以使用它来读取cookie。例如,您有一个名为"color"的cookie,其值为"blue",当您执行request.COOKIES['color']
时,会返回字符串"blue"。您不能使用request.COOKIES
来设置cookie,因为这些cookie值是由浏览器在请求时发送给Django的。要设置cookie,您需要使用HttpResponse.set_cookie
。(https://docs.djangoproject.com/en/1.5/ref/request-response/#django.http.HttpResponse.set_cookie)
另一方面,document.cookie
是“原始”格式的cookie,是以分号分隔的名称-值对的字符串。要读取特定的cookie,您需要在该字符串上执行搜索,以查找所需的cookie;要设置cookie,您需要调用document.cookie = "name=value;..."
[ref]。但大多数情况下,JavaScript库/框架已经为您完成了这项工作,因此获取/设置cookie只需要一组函数调用即可。request.COOKIES
返回
一个标准的Python字典,包含所有cookie。键和值都是字符串。
document.cookie
返回一个字符串。
我认为遍历一个字典并获取所有cookie比解析javascript返回的字符串更容易。
request.COOKIES
是通过Python在服务器端读取cookie,而document.cookie
是在客户端读取cookie。 - Timmy O'Mahony