チケット #13 (new blog)
pythonでclearsilverをテンプレートエンジンとして使う
| 報告者: | mtamaki | 担当者: | mtamaki |
|---|---|---|---|
| 優先度: | major | マイルストーン: | |
| コンポーネント: | blog | バージョン: | |
| キーワード: | 関係者: |
説明 (最終更新者: mtamaki) (diff)
今までテンプレートエンジンにCheetahをつかってたんですが、 $$~が変数名として認識されるせいでprototype.jsの$系のJSの関数と相性がよくないという問題があり、 これを機にTracでも使ってるClearSilverを試してみることにしました。
とりあえずインストールするには http://www.clearsilver.net/downloads/ から、 Windowsなら win32/clearsilver-x.x.xx.win32-pyx.x.exe を落としてきて実行します。
するとsite-packagesにneo_cgi.pydがインストールされます。
ためしにClearSilverで文字列中のテンプレートを変数で置換するpythonスクリプトは以下のような感じ。
import neo_cgi #import neo_cgiでneo_cgi.pydをロードした後でないとimport neo_csとかimport neo_utilができない。 import neo_cs #CSオブジェクトが入ってる。 import neo_util #HDF (CSオブジェクトの生成時に使う引数。置き換える変数とかはこれに指定する) オブジェクトが入ってる。 hdf = neo_util.HDF() hdf.setValue( "variable_name", "値 (オブジェクトでも可)" ) cs = neo_cs.CS( hdf ) cs.parseStr( "テスト=<?cs var:variable_name ?>" ) print cs.render()
(071028追記) CheetahとClearSilverを使ってみた感想としては、まずClearSilverはHTML向けのテンプレートエンジンだということ。Cheetahはテキスト形式なら割と何でもいける。
あとCheetahでのJSの$関数の話に関しては\$と書けばエスケープできます。
また、ClearSilverはテンプレートに変数を埋め込む処理が遅いという話を聞いたことが。未検証。
他にもKIDとかテンプレートエンジンはいろいろあるみたい。 自分は任意のテキストをテンプレートとして展開することが多いので今はCheetah使ってます。