2009年6月17日水曜日

[ GAE ] GAEのテンプレート機能をテンプレートファイル無しで使う方法

GAEのテンプレート機能を、テンプレートファイル無しで使う方法。

普通はこんな感じ。
from google.appengine.ext.webapp import template
# -- 省略 --

tmp_val = {
'my_name' : 'Yumitsuka Sakito',
'my_site' : 'http://www.ehaco.net'
}
path = os.path.join(os.path.dirname(__file__), 'tmp/template.html')
self.response.out.write(template.render(path, tmp_val))


Pythonには辞書型配列という機能があって、「 名前 : 内容 」形式で宣言します。
まあ詳しくは他のサイトを見てください。

これをテンプレートに送り込めば、自動的に名前を探して画面に取り込んでくれます。

ただ、このtemplate.render()関数、ファイルパスを指定するので、ファイルしか使えません。
文字列をテンプレートに使用したい場合は、以下のようにします。

from django.template import Context, Template

# -- 省略 --

tmp_val = {
'my_name' : 'Yumitsuka Sakito',
'my_site' : 'http://www.ehaco.net'
}
t = Template('Hello. My name is {{ my_name }}. My site is {{ my_site }}!!')
self.response.out.write( t.render( Context(tmp_val) ) )



…別に変なことはしていません。
Djangoのクラスをインポートして使っているだけです。

つまり、その他にも使えるものがありそうだ、ということ。
色々使いこなす余地が出てきますね。