Pythonチュートリアル:テンプレートエンジン
https://gyazo.com/153a339305d78fc4fa4850753e4b1594
テンプレートエンジンについて
テンプレートエンジンは、テンプレートと呼ばれる雛形にデータを渡すとドキュメントを生成するものです。Python で利用されているテンプレートエンジンも多数あります。
Webアプリケーションの開発を意識したXML系テンプレートエンジン
Web以外のドキュメントを生成することを意識した多用途テンプレートエンジン
ここでは、次の多用途テンプレートエンジンについて説明することにします。
Jinja2:Django Template に触発されて開発。Ansibleなど多数のプロジェクトで採用
Mako:高速で軽量なテンプレートエンジン
Cheetah:多用途向けの高速なテンプレートエンジン
Jinja2 と Mako は、機能の多くに重複するものがあるため、初心者の場合、どちらを選択するかによって、テンプレート言語としてのフォーマットスタイルが決まることになります。
また、適用するプロジェクトがWebアプリケーションであれば、使用するフレームワークによって必然的に採用するテンプレートエンジンの選択肢が限定されることになります。
Jinja2
Jinja2は、テンプレートをバイトコードにコンパイルし、HTMLエスケープ、サンドボックス化、テンプレート継承、テンプレートの一部をサンドボックス化する機能などの機能を備えています。 そのユーザーには、Mozilla、SourceForge、NPR、Instagramなどがあります。
ドキュメントも充実しています。
テンプレート内のロジックには独自の構文を使用します。
Mako
Pythonで実装されたオープンソースのテンプレートエンジンです。Jinja2がDjango Templateに触発されてその互換性を意識して設計されているのに対して、Makoは高速パフォーマンスを実現するように設計されています。
テンプレート内のロジックにはPythonコードをインラインで使用します。
データベースマイグレーションツール alembic でもマイグレーションファイルの生成のために使用されています。 Cheetah
Cheetahは、その名のとおり、高速で柔軟性があり、強力な、テンプレートエンジンおよびコード生成ツールです。 Cheetahは、Pythonからの利用に限定されているわけではなく、単独で使用することも、他のテクノロジーやスタックに組み込むこともできます。 Cheetahは、マークアップの生成とテンプレート化のためのドメイン固有言語を提供していて、既存のPythonコードとの完全な統合を可能にするだけでなく、従来のPython構文の拡張機能を提供してテキスト生成を容易にしてくれます。
参考