WSGI:无法设置&检索cookie,因为在第一次传递时,不存在要检索的cookie。

时间:2014-09-02 18:33:35

标签: python python-2.7 mod-wsgi wsgi

问题是......这一行:

 x = cookie['r'].value

它希望获得名为" r"的cookie。但它不能,因为它还没有确定。

要设置它必须不会导致脚本错误。所以也许它可以在第二次重装时得到cookie。但它拒绝这样做。

import Cookie
cookie = Cookie.SimpleCookie()

def application(environ, start_response):

    cookie.load(environ['HTTP_COOKIE'])

    t = 'r=rrrr'

    headers = [('Set-Cookie', t),('Content-type', 'text/plain')]

    start_response('200 OK', headers)
    x = cookie['r'].value

    yield str(x)

基本上我需要告诉

  x = cookie['r'].value

即使无法获取cookie也不会造成任何麻烦。

1 个答案:

答案 0 :(得分:0)

 x = cookie.get('r') and cookie['r'].value

实际上没有尝试过(没有WSGI方便),但这是类字典对象的标准模式。

对于Python幼崽:如果密钥不存在,字典上的 get将返回Noneand通过返回第一个值来“短路”,如果它是“falsy”,None(如0和空字符串和空列表)是,如果第一个值是“,则返回第二个值” truthy”。

因此,如果没有名为“r”的Cookie,则cookie.get('r')会返回None,然后流程就会停止,并为x分配值None。如果有这样的cookie,则cookie.get('r')将其返回。因此,评估cookie['r'].value并为x分配结果。