webapp でのテンプレートの利用方法

webapp のテンプレートとは?

Web アプリケーションを開発したことのある人なら、経験したことがあると思いますが、Web アプリケーションは特に UI (みため。デザイン)の変更が非常に頻繁に行われる場合が多いものです。 ちょっとした情報の追加だったり、ユーザビリティ向上のためのレイアウトの変更だったり、と、いろんな変更が起こり得ます。

そういうわけで、アプリケーションのデザインとロジック(コード)をなるべく分離したいわけですが、そこで出てくるのがテンプレートです。

テンプレートは基本的に HTML ファイルとして作成し、渡した変数をうまい具合にテンプレートに当てはめて表示する、というものです。

といってもピンと来ないかもしれないので、実際に使ってみましょう。

テンプレートを試してみよう

テンプレートを使って、以前作成した webapp 版 Hello World を書き直します。

次のファイルを index.html として helloworld1 ディレクトリに配置します。

<html>
<body>
<h1>Hello, template!</h1>
</body>
</html>

みて分かる通り、非常に単純な HTML ファイルです。

次に helloworld.py を次のように書き換えます。

import os
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext.webapp.util import run_wsgi_app

class MyPage(webapp.RequestHandler):
    def get(self):
        template_values = {}
        path = os.path.join(os.path.dirname(__file__), 'index.html')
        self.response.out.write(template.render(path, template_values))

application = webapp.WSGIApplication([('/', MyPage)], debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main() 

このように変更して、先ほどと同じように http://localhost:8080/ を要求すると、次のように表示されるはずです。

webapp テンプレートの利用

うまく動きましたか?これは明らかに上で作成したテンプレートの内容が表示されていますね。

このように、テンプレートを利用すると HTML ファイルとして作成した内容をそのまま出力することが可能になります。