テンプレートエンジンMako
GAEであればフレームワークが提供さテンプレートエンジンも使えるみたいだけど簡単シンプルなものを探してみてとりあえずMakoを使ってみることに。
ただGAEで使うのであればsetup.pyは使えないと思われるので手動でインストールできないかと思いかなり勘で解凍したフォルダのlibの中にあるmakoディレクトリをプログラムと同じディレクトリにコピーして試してみることに、モジュールはカレントディレクトリも検索対象になるはず。
(ディレクトリ)
| index.py | --Mako#Makoモジュールディレクトリ | | --tmpl#テンプレートファイル保存フォルダ | | | index.html | --tmp #キャッシュディレクトリ | mako_cache
(index.py)
#!d:\Python25\python.exe #coding:utf-8 from mako.template import Template from mako.lookup import TemplateLookup print "Content-Type: text/html" print # args = {'directories':'tmpl','module_directory':'tmp/mako_cache','output_encoding':'utf-8'}#マルチバイトを含む場合はoutput_encodingが大事 lookup = TemplateLookup(**args) tmpl = lookup.get_template('index.html') value_array={'value':'abcd','value2':'日本語'.decode("utf-8"),'flagvalue':'True','loopvalue':5} value_array["value3"]="xyz" print tmpl.render(**value_array)
(index.htmlテンプレート)
#coding:utf-8 だいじ# <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <div>テンプレート本文</div> <div>OK?</div> <div>${value}</div> <div>${value2}</div> <div>${value3}</div> <div>${flagvalue}</div> % if flagvalue == "True": <div>flagvalue:true</div> % endif % for i in range(loopvalue): <div>${i+1}</div> % endfor <% print "python de write" %> </body> </html>
うまく表示成功!!今までの作り方ではテンプレート部分にあまりプログラムコードは書きたくないので最低限動的な文字の埋め込み、判定文による表示の変更と繰り返しができれば十分かな。