Home > Python > Pythonのテンプレートエンジン

Pythonのテンプレートエンジン

  • 2006-12-22 (Fri) 6:02
  • Python
  • hatena button
  • hatena count
  • save this page del.icio.us

最近PythonでCGIも書いているのですが、Python用のテンプレートエンジンが使いづらい。

ググると沢山出てきますが、どれもテンプレート内にPythonのコードが書けない。PythonのWebフレームワーク「Django」も、独自のテンプレート言語を使わなければならず、Pythonコードを直接書けないので非常に使いづらい。

AzaraCを使ってていいなーと思うのも結局テンプレート内にがしがしコードを書ける所。もうC++でやりたい放題なわけですよ。STLとかがんがん使ってページを生成するわけですよ。流石にテンプレート内にkmpとかいう関数があった時はびっくりしましたが。

Django方式だとテンプレート内にif len(hoge) > 0とか書きたい場合、len等のPythonの関数もテンプレート内には原則として書けないので、ロジック側で context = { “hogeflag” : len(hoge) > 0 } と定義してからテンプレート側で “hogeflag”を使用しなければいけない。これは eRuby とか見た人間からすると凄い鬱陶しい。

「だから速度が出る」とか「デザイナーはコード書かれてもわからへんねん」と言われたらそれまでなのだが、もうちょっと何とかならないんですかね。やっぱりインデントの問題ですか?

素敵なアイデアがあればいいんだけど。

Similar Posts:

Comments:4

everes 06-12-22 (Fri) 11:19

Djangoの思想では、ロジカルなものをテンプレート上に表現したい場合はカスタムタグを定義します。
ifタグも同じ要領で実装されていますので、容易に作れます。
テンプレートシステム的な制限ではありません。
美しくないので、デフォルトでは用意されていないのです。
if len(hoge) > 0:は既存のタグで表現できますので、ただの例だということはわかりますが。
まぁ、直接すぐにかけないというのはその通りです。
デザイナーはコードを書かれるとわからないのではなく、表示部分はデザイナが全部書くんです。
それに、テンプレートにがんがんPythonコードを書けるものがたくさんありますよ。

kzk 06-12-22 (Fri) 16:29

コメント有難うございます。
すいません、Djangoを例に出したのが悪かったですね。
Djangoはデザイナーとの分業をするためにああいう設計になっているというのは知っていたのですが、「テンプレート内にPythonコードを原理的にかけるのか」という所に疑問を投げかける例に使ってしまいました。
> デザイナーはコードを書かれるとわからないのではなく、表示部分はデザイナが全部書くんです。
デザイナーと分業するようなでかいものを書いたことが無い or デザイナーのイラレファイルから自分でhtmlに落とすのでちょっとこの感覚が分からないんですよね…。
> それに、テンプレートにがんがんPythonコードを書けるものがたくさんありますよ。
おお。ちょっと調べてみます。
情報有難うございますm(_ _)m

okuji 06-12-24 (Sun) 0:14

直接書く例としては、mod_pythonのテンプレート、ViewCVS/ViewVCの独自テンプレートシステム、ZopeのPage Templateなんかがありますね。

Kawasaq通信 07-08-07 (Tue) 10:01

Pythonで使えるテンプレートエンジン

Django を使ってごにょごにょやっているなかで、自分がいま必要としているのは、DjangoのようなWeb アプリケーションのフレームワークではなくて、…

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://kzk9.net/blog/2006/12/python.html/trackback
Listed below are links to weblogs that reference
Pythonのテンプレートエンジン from moratorium

Home > Python > Pythonのテンプレートエンジン

お薦め本
広告
Archives
Categories

Return to page top