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 は常に dispatch with を呼び出すため、このコードは明らかに機能していませんself
。のコードを調べましたがwebapp2.RequestHandler
、継承ハンドラーから応答オブジェクトを簡単に返すことができるように、BaseHandler を変更する (またはカスタム ディスパッチャーを設定する) 方法がまったくわかりません。
不思議なことに、割り当てのショートカットもself.response = copy.deepcopy(response)
機能しません。