web-dev-qa-db-ja.com

最高のPythonコード生成を容易にするテンプレートライブラリ

翌日(または1年)にそれらすべてについて読む代わりに、より詳細に調べる必要があるテンプレートエンジンの提案はありますか?

30
taudep

最良の提案:それらすべてを試してください。長くはかからないでしょう。

私のお気に入り: Jinja2 (1マイル)

それはまともな構文を持っており、それを通してエラーを追跡することができ、サンドボックス化可能です。

29
Ali Afshar

コード生成を行っている場合は、 Cog が便利であることがわかるかもしれません。これは、一般的に適用可能なテンプレート言語ではなく、コード生成専用です。

16
babbageclunk

最も重要な懸念事項は、テンプレートに必要な構文を使用できるかどうかです。 2番目と3番目(アプリケーションのニーズに応じて)は、配布の速度と容易さです。

私はそれらすべてを見ましたが、私が立つことができる唯一の構文は Jinja でした。 Jinjaには、多くのPython構造をサポートするという利点があるため、特別なタグをコーディングしなくても、必要に応じて機能のスニペットをテンプレートに追加するのは非常に簡単です。他のテンプレートシステムでタグが必要なもののほとんどJinjaのマクロによって処理されます。

もちろん、簡単で迅速なものを探しているなら、コア言語で PythonテンプレートAPI に勝るものはありません。

10
Chris B.

更新:キッドは Genshiに成功したようです

私はKidを使用しました。これは古いシステムの1つだと思います。私はそれが非常に堅固で、安定していて、信頼できることを発見しました。タグベースなので、XML/HTMLでの作業に最適です。テンプレート関数が特別なブロックではなくHTML属性として実行されるという点で興味深いです。つまり、{%...%}です。ただし、その一部の側面(特に「含む」の方法)はかなり厄介になる可能性があります。また、積極的に開発されていないか、まったく開発されていないようです。

しばらく前から存在していて、かなり安定しているものが必要な場合は、一見の価値があります。もっと最近のものが欲しいのなら、GenshiとJinjaの両方について良いことを聞いたことがあります。

2
DNS

非常に軽量なオプションが必要な場合は、templeteを試してください。これは、単一モジュールの80行のコードのようなものです。ご覧ください ここ および ここ (ブログで公開されました)。機能が十分であれば、それは賢くて非常に焦点を絞ったソリューションだと思います。

1
nikow

私は Clearsilver が好きです。なぜなら、それはいくつかの異なる言語で動作し、データとプレゼンテーションの分離を厳密に強制するからです。以前はCheetahを使用していましたが、かなりいいのですが、Pythonの限定された形式のように見えることがあるものを操作するのは好きではありませんでした。

1
David Z

X [HT] MLを使用している場合、整形式のテンプレートを残すことができるタグベースのテンプレートシステムの1つは良い動きです。 [〜#〜] pxtl [〜#〜] 、FWIWを使用します。 (他の形式を生成することもできますが、XMLまたはHTMLに重点を置いていない場合は、賢明な選択ではありません。)

式を独自のリトルランゲージに制限することで「ビジネスロジックとプレゼンテーションを分離するのに役立つ」と主張するテンプレートシステムは非常に嫌いです。彼らは「プレゼンテーションロジック」のようなものがあることを理解していないようで、それを実行するためにPythonのような実言語が必要になるほど複雑になることがあります。ビジネスロジックを使用したアプリへのプレゼンテーションロジックはなので、勝利ではありません。避けてください。

(限定式の個別のミニ言語アプローチは、JSPの「EL」ではある程度意味がありました。Javaは煩雑すぎてテンプレートライブラリで使用できません。しかし、Pythonがあります!テンプレートに式をそのまま記述します。機能を切り取って、ユーザーに別の新しい言語を学習させると、何も得られません。)

1
bobince