Google App Engine/Python でリクエストハンドラーの共通処理を簡潔にまとめる方法
最近、 Google App Engine をいじりはじめました。とりあえずスタートガイドに目を通して、簡単なアプリを作って勉強しているところです。
そのアプリでは、各ビューのクラスに共通の処理があるのですが、その処理をいちいち書くのが面倒くさいので、その処理をまとめたクラスをつくって、それを各ビューのクラスで継承させています。
例えばログイン中の google アカウントを読み込んだり、そのビューのテンプレートとなる HTML ファイルのパスを設定したりといった処理です。
以下のような感じです。
# 各ビューのクラスで共通の処理 class View(object): template_file = '' template_values = {} def __init__(self): # ビューのクラス名と同じファイル名の HTML ファイルをテンプレートにする。 self.template_file = self.__class__.__name__ + '.html' # ログイン中の Google アカウントを取得する。 self.template_values['google_account'] = users.get_current_user() def render(self): path = os.path.join(os.path.dirname(__file__), self.template_file) self.response.out.write(template.render(path, self.template_values)) # ホーム画面のビュー class ViewHome(webapp.RequestHandler, View): # ホーム画面でのみ必要な処理 ...... self.template_values['hoge'] = hgoe self.render() # カテゴリー画面のビュー class ViewCategory(webapp.RequestHandler, View): # カテゴリー画面でのみ必要な処理 ...... self.template_values['hoge'] = hgoe self.render()
これまでクラスの継承とかそういうことを考えたことがなかったので、果たしてこの方法がよい方法なのかどうか、いまいちわかりません。
アドバイスいただけると幸いです。