Google App Engineでもうちょっとがんばってみる:メール送信プログラム

白石俊平(あゆた)
2008-04-11 18:00:00
  • このエントリーをはてなブックマークに追加

テンプレートの利用

 前回行ったように、レスポンス本文をスクリプトに埋め込むのは、読み易さや保守性の点から見ると問題がある。やはりWebアプリケーションであれば、HTMLベースのテンプレートを使用したいところだ。

 App Engineのwebappモジュールには、開発者の利便性を考えてDjangoのテンプレートエンジンが同梱されている。今回のアプリケーションに置ける画面作成は、同テンプレートエンジンを使用している。ソースコードを見てみよう。

 まず、テンプレートを利用する側のソースコードだ。

# (1) テンプレートファイルへのパスを作成
path = os.path.join(os.path.dirname(__file__), 'response.html')
# (2) テンプレートの書き出し
self.response.out.write(
  template.render(path, {'username':user.nickname()}))

 (1) スクリプトのソースファイル(__file__)のパスからディレクトリ部分だけを抜き出し、テンプレートファイル名(response.html)と結合することで、テンプレートファイルの絶対パスを作成している。

 (2) テンプレートをパースしているのがこの部分。google.appengine.ext.webapp.templateモジュールのrender()関数を用いる。render()の第一引数はテンプレートファイルのパス、第二引数はテンプレートに渡す引数だ。ここでは、ユーザの表示名を"username"と言うキーにひも付けている。

 テンプレートファイル(response.html)の内容は以下。




メール送信サンプルにようこそ!


  こんにちは、{{username|escape}}さん!メールはしっかり送らせていただきました!


 usernameの値を、HTMLエスケープして表示している部分がキモだ。テンプレートの書式を詳しく知りたければ、Djangoテンプレートのドキュメントを参照していただきたい。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]