简单的东西在这里...测试的饼干存在在Django
,如果我尝试通过
request.COOKIE["key"]
引用在Django一个cookie,如果cookie不存在,这将抛出一个关键的错误。
对于Django的GET
和POST
,因为它们是QueryDict
对象,我可以做
if "foo" in request.GET
这是奇妙复杂的...
,是不是有什么最接近这个饼干一个try/catch块,如果有什么...
简单的东西在这里...测试的饼干存在在Django
,如果我尝试通过
request.COOKIE["key"]
引用在Django一个cookie,如果cookie不存在,这将抛出一个关键的错误。
对于Django的GET
和POST
,因为它们是QueryDict
对象,我可以做
if "foo" in request.GET
这是奇妙复杂的...
,是不是有什么最接近这个饼干一个try/catch块,如果有什么...
request.COOKIES
是一个标准的Python字典,所以相同的语法工作。
做的另一种方法是:
request.COOKIES.get('key', 'default')
如果该键存在返回的值,否则“默认” - 你可以把任何你在的地方“默认”的喜欢。
首先,它是
request.COOKIES
不是request.COOKIE
。其他人会给你一个错误。
其次,它是一个字典(或类似字典)对象,所以:
if "foo" in request.COOKIES.keys()
会给你你所需要的。 如果你想要得到的cookie的值,你可以使用:
request.COOKIES.get("key", None)
那么,如果没有关键"key"
,你会得到一个None
,而不是例外。
由于python 2.2,你可以在request.COOKIES中使用'if'foo“ - 没有必要添加'.keys()' – 2009-09-23 16:21:13
的权利。可能它只是我,但我更喜欢更长的版本(也许与长期以前一起工作的问题很长时间)。它更对称,更隐含我如何检查是否使用:在dict.keys()中的“foo”中,如果dict.values()中的“bar”... ... – kender 2009-09-23 16:28:28
@kender,则“ dict.keys中的“foo”()' - 'dict.keys()'创建一个清单,然后垃圾收集 - 额外的开销。 – warvariuc 2013-04-04 13:30:37