1

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)機能しません。

4

2 に答える 2

0

1 つのメソッドで 2 つの応答を混合しています。どちらかを使用

return webapp2.Response('Foo')

また

self.response.write('Foo')

...両方ではありません。

于 2013-06-12T23:31:29.190 に答える