Python 测试Django中是否存在cookie
这里简单的东西 如果我试图通过引用Django中的cookiePython 测试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
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()
创建了一个列表,然后被垃圾收集-额外的开销。