我修改了这个示例代码,以便让 webapp2 会话在 Google App Engine 上运行。
我需要做什么才能从继承自覆盖该方法的 BaseHandler 的处理程序返回 webapp2.Response 对象dispatch
?
这是我要编写的处理程序类型的演示:
import webapp2
import logging
from webapp2_extras import sessions
class BaseHandler(webapp2.RequestHandler):
def dispatch(self):
# Get a session store for this request.
self.session_store = sessions.get_store(request=self.request)
try:
# Dispatch the request.
webapp2.RequestHandler.dispatch(self)
finally:
# Save all sessions.
self.session_store.save_sessions(self.response)
class HomeHandler(BaseHandler):
def get(self):
logging.debug('In homehandler')
response = webapp2.Response()
response.write('Foo')
return response
config = {}
config['webapp2_extras.sessions'] = {
'secret_key': 'some-secret-key',
}
app = webapp2.WSGIApplication([
('/test', HomeHandler),
], debug=True, config=config)
这段代码显然不起作用,因为 BaseHandler 总是用self
. 我已经查看了 的代码webapp2.RequestHandler
,但它严重地让我无法修改我的 BaseHandler(或者可能设置自定义调度程序),以便我可以简单地从继承处理程序返回响应对象。
奇怪的是,分配的快捷方式self.response = copy.deepcopy(response)
也不起作用。