投稿日:

eepy – Python コード埋め込み形のシンプルなテンプレートエンジン


Python コードを埋め込む形式のシンプルなテンプレートエンジンです。Ruby の ERB のような感じです。まだ検討したいところも多々ありますが、もしお役に立ちそうに思われた方はご自由にお使いください。で、何か不具合があれば教えてください♪

特徴

  • Ruby の ERB 風の記法
  • Python のインデントブロックを意識せず、テンプレートを記述可(”end” キーワードの使用)
  • フィルタ。値の埋込み時に、html クォートなどのフィルタを自動的・全般的に適用可
  • キャッシュ。Renderer 利用時に利用可
    • メモリ保持で揮発性の1次ファストキャッシュ(1トランザクション内でのテンプレートの繰り返し利用の為)
    • 2次キャッシュ。コンパイル済みのテンプレートの永続化。現在、File ベースと、Gae Memcache ベースのストレージを準備。他の DB ストアなど、必要に応じてストレージを追加可
  • ヘルパ。幾つかの便利なヘルパを提供
    • extends と block。Django のような、テンプレートを継承・拡張するスタイルを利用可
    • include。テンプレート中で、他のテンプレートを読み込み

なお、eepy は、yuin さんの embpy をベースとした派生ライブラリです。
また、キャッシュのストレージ仕様は、kuwata-lab.compyTenjin を参考にさせて頂いています。

embpy との主な相違点(2010.02.10時点)

  • ブロックの終わりの明示は end キーワードでのみ可
  • インラインでブロックを記述する時に、{: ~ :} の記述が不要(普通に書けます)
  • 複数行のコードパートにブロックを書く時は、end キーワードは不要(普通に書けます)
  • 三項演算子が利用可
  • render の戻り値は、unicode

ドキュメント

モジュール、クラス、メソッドに記載の doc を参照してください。

テンプレート(template.html/utf8):

Python コード:

出力結果:

ソースコード

次の URLにて公開しています。

https://github.com/yuka2py/eepy