Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 测试Django中是否存在cookie_Python_Django_Http_Cookies - Fatal编程技术网

Python 测试Django中是否存在cookie

Python 测试Django中是否存在cookie,python,django,http,cookies,Python,Django,Http,Cookies,这里简单的东西 如果我试图通过引用Django中的cookie request.COOKIE["key"] 如果cookie不存在,将抛出一个键错误 对于Django的GET和POST,因为它们是QueryDict对象,所以我可以这样做 if "foo" in request.GET 这是非常复杂的 对于不是Try/Catch块的cookies来说,最接近这一点的是什么…首先,它是 request.COOKIES 不是请求.COOKIE。另一个会给你一个错误 其次,它是一个dictiona

这里简单的东西

如果我试图通过引用Django中的cookie

request.COOKIE["key"]
如果cookie不存在,将抛出一个键错误

对于Django的
GET
POST
,因为它们是
QueryDict
对象,所以我可以这样做

if "foo" in request.GET
这是非常复杂的

对于不是Try/Catch块的cookies来说,最接近这一点的是什么…

首先,它是

request.COOKIES
不是
请求.COOKIE
。另一个会给你一个错误

其次,它是一个dictionary(或类似dictionary的)对象,因此:

if "foo" in request.COOKIES.keys()
会给你你需要的。 如果要获取cookie的值,可以使用:

request.COOKIES.get("key", None)

然后,如果没有键
“键”
,您将得到一个
None
,而不是一个异常。

请求。COOKIES
是一个标准的Python字典,因此同样的语法也适用

另一种方法是:

request.COOKIES.get('key', 'default')

如果键存在,则返回值,否则为“default”-您可以将任意内容替换为“default”。

自python 2.2以来,您可以在request.COOKIES中使用“if”if“foo”-无需添加“.keys()”正确。可能只有我一个人,但我更喜欢较长的版本(可能是因为长时间使用2.2之前的版本)。如果我使用dict.keys()中的“foo”和dict.values()中的“bar”…@kender,那么dict.keys()中的“foo”只是有一个缺点。-
dict.keys()
创建了一个列表,然后被垃圾收集-额外的开销。