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

白石俊平
2008/04/11 18:00

Google App Engineの基礎を学んだところで、もうちょっと発展的なプログラムを組んでみよう。

テンプレートの利用

 前回行ったように、レスポンス本文をスクリプトに埋め込むのは、読み易さや保守性の点から見ると問題がある。やはり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)の内容は以下。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>メール送信サンプルにようこそ!</title>
</head>
<body>
  こんにちは、{{username|escape}}さん!メールはしっかり送らせていただきました!
</body>
</html>

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

記事の感想やご意見をコメントでお寄せください(CNET_IDログインが必要です)
ログイン パスワードを忘れた方  |  新規登録
  • 新着記事
  • 人気記事
  • 特集
  • ブログ