GAE Python - 将数据库查询保存到cookie中

时间:2013-02-24 14:46:19

标签: python google-app-engine cookies

我正在尝试将数据库查询保存到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)

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

1 个答案:

答案 0 :(得分:2)

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

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

请注意额外的括号和逗号。