1

我正在尝试将数据库查询保存到 cookie 中,因为我需要每个页面上的结果。当将到期日期硬编码到代码中时,一切正常,但是当我用动态“第二天”到期替换硬编码日期时,它给了我以下错误:

self.response.headers.add_header(str('Set-Cookie'), str('shops=%s; path=/; expires=%s') % shoplist expire_string)
                                                                                                               ^
SyntaxError: invalid syntax

我也尝试使用 response.set_cookie 方法,但这根本不起作用,这就是我决定使用以下代码的原因:

class CookieHandler(webapp2.RequestHandler):
    def get(self):
        shoplist = Shop.all().filter('active = ', True).order('abbrev')
        expire_date = datetime.datetime.now() + datetime.timedelta(days=1)
        expire_string = expire_date.strftime('%a, %d %b %Y %H:%M:%S GMT')
        self.response.headers.add_header(str('Set-Cookie'), str('shops=%s; path=/; expires=%s') % shoplist expire_string)

更新 为了提供有关内容的更多信息 - 它是对数据库中所有商店名称的查询。该查询用于在每个页面上可见的搜索框上的自动完成功能。

4

1 回答 1

2

您的语法错误正在发生,因为“%”运算符需要一个元组在其右侧,因此您的代码行应该是:

self.response.headers.add_header(str('Set-Cookie'), str('shops=%s; path=/; expires=%s') % (shoplist, expire_string))

注意额外的括号和逗号。

于 2013-02-24T15:10:03.993 回答