在Django中检测cookie是否存在

8 投票
2 回答
12829 浏览
提问于 2025-04-15 14:33

这里的内容很简单...

如果我在Django中尝试引用一个cookie,使用

request.COOKIE["key"]

如果这个cookie不存在,就会出现一个键错误。

对于Django的 GETPOST,因为它们是 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' 替换成你想要的任何东西。

撰写回答