在Django中检测cookie是否存在
这里的内容很简单...
如果我在Django中尝试引用一个cookie,使用
request.COOKIE["key"]
如果这个cookie不存在,就会出现一个键错误。
对于Django的 GET
和 POST
,因为它们是 QueryDict
对象,我可以直接这样做:
if "foo" in request.GET
这真是太高级了...
那么,有没有什么方法可以处理cookie,而不是使用Try/Catch块呢?
2 个回答
7
首先,它是
request.COOKIES
而不是 request.COOKIE
。用另一个会让你出错。
其次,它是一个字典(或者说像字典一样的东西),所以:
if "foo" in request.COOKIES.keys()
会给你需要的东西。
如果你想获取cookie的值,可以使用:
request.COOKIES.get("key", None)
这样,如果没有 "key"
这个键,你会得到一个 None
,而不是出现错误。
23
request.COOKIES
是一个标准的 Python 字典,所以你可以用和字典一样的方式来操作它。
还有另一种方法可以做到这一点:
request.COOKIES.get('key', 'default')
这个方法会返回对应键的值,如果这个键不存在,就会返回 'default' - 你可以把 'default' 替换成你想要的任何东西。