我正在使用webapp2_extras设置会话变量。如果在设置变量后打印该变量,则该值是正确的。也会发出save_sessions调用。但是,当我再次发出请求时,变量没有设置。
大部分代码取自webapp2 documentation

import webapp2
from webapp2_extras import sessions

class BaseHandler(webapp2.RequestHandler):
    def dispatch(self):
        self.session_store = sessions.get_store(request=self.request)
        try:
            webapp2.RequestHandler.dispatch(self)
        finally:
            self.session_store.save_sessions(self.response)
    @webapp2.cached_property
    def session(self):
        return self.session_store.get_session()

class MainHandler(BaseHandler):
    def get(self):
        foo = self.session.get('foo')
        print foo
        self.session['foo'] = 'bar'
        foo = self.session.get('foo')
        print foo
        self.response.write(BaseHandler)

config = {}
config["webapp2_extras.sessions"] = {
    "secret_key": "key",
}

app = webapp2.WSGIApplication([
    ('/', MainHandler)
], debug=True, config=config)

这总是返回“无某物”,但我希望它返回“某物”作为第二个请求。

最佳答案

我知道这是一个相当古老的问题,但我遇到了同样的问题,这就是我解决的问题。
我修改了WebAP2CONFIG对象来添加AuthPARAM。
以前是什么:

config = {}
config["webapp2_extras.sessions"] = {"secret_key": "key" }

app = webapp2.WSGIApplication([('/', MainHandler)], debug=True, config=config)

现在应该是:
config = {}
config["webapp2_extras.sessions"] = {"secret_key": "key" }
config["webapp2_extras.auth"] = {'session_backend': 'securecookie'}

app = webapp2.WSGIApplication([('/', MainHandler)], debug=True, config=config)

07-24 09:36
查看更多