(続き)Jinja2の纏め

という訳で、PythonのテンプレートエンジンJinjaの纏めである。基本的に、以下ではJinja2の纏めになる。

先程説明したように、JinjaはDjangoのテンプレートエンジン部を抜き出したような仕様になっていて、テンプレートだけ使う分には、Djangoよりも簡単に使うことができる。

ただ、Djangoの方が日本語ドキュメントが豊富なので、英語苦手な人は

http://djangoproject.jp/doc/ja/1.0/topics/templates.html#topics-templates

などを読めば言語仕様が大体理解できる。英語ドキュメントは公式ページ

http://jinja.pocoo.org/

が良いだろう。

言語仕様

基本的なHTMLやxhtmlで書けば良い。プログラムが後で代入する変数部分には{{ hoge }}と入れる。

あとはfor文等を用いて、配列も処理できる。

埋め込み

これに関してはサンプルを見せた方が早いだろう。

from jinja2 import Template
tmpl = Template("Hello, {{ name }}!")
print tmpl.render({'name': ponkotuy})

これを実行すれば、"Hello, ponkotuy!"が出力される、という寸法である。

テンプレート機能

Webサイトというのは、サイト全体で共通の部分と、オリジナル部分に大まかに分けられる。従ってオリジナルの部分だけ書きたいと思うのは自然の流れであろう。

この為に、CSSを使うの当然として、テンプレートという機能を使える。サイト全体で使うテンプレートファイルと、それに合わせてオリジナルな部分を書く個々のファイルを作れば、作業量が減るし、何よりスマートである。

親ファイルとなるテンプレートは基本的にはHTMLである。但し、個々のファイルで異なる部分に

{% block content %}ここに指定が無かった場合のデフォルト値を書く{% endblock %}

と書く。

子となる個々のページには、先ず

{% extends "base.html" %}

と親のファイルを記述し、その後ろに

{% block content %}テンプレートに挿入する内容を書く{% endblock %}

と書けば宜しい。