SSブログ

Django テンプレートで困ったときのカスタムフィルターの勧め [Python]

Django を使い始めて一番とまどったのは、テンプレート言語の機能の少なさだ。
Django のテンプレートシステムは、本当に機能が制限されてて、なかでも制御構造は凄く限られているし、1.2 までは if の中の条件式ですら python の式なんて書けなかった。
まぁ、慣れとは恐ろしいもので、その 1.2 で入った条件式を使っているかというと、そうでもなく、テンプレート言語の機能の少なさゆえに、テンプレートの式の副作用で不具合が発生しづらかったりするところが、だんだん便利に感じてくる。

ただ、テンプレートの機能といえるのかどうかわからないが、テンプレートに式を書くかわりにカスタムタグやカスタムフィルタという機能がある。
カスタムタグはノードツリーを辿らないと行けないのでちょっと敷居が高いけど、カスタムフィルタは割と簡単に書ける。
最初は難しそうなので避けて通っていたのだが、テンプレート言語の機能の少なさを補うために、テンプレートフィルターは避けて通れないので早めに使ってみることをお勧めする。
まずは、ビルトインされているフィルターにどういうのがあるか確認するとよい。ソースも読めるし。バージョンが増えるに従って、だんだん増えてきて、わざわざ自分でかかなくても、実はあったりする。

{%if %} タグの中に書く変数は、実はフィルターに掛けた結果でも大丈夫らしく
たとえば
{%if foo|bar:baz %}
というように引数付きのフィルターもかける。
最初は、文字列を返すフィルターばっかり書いてたが、数値や Boolean を返すフィルターは意外と便利だ。

フィルターを重ねられるので {%foo|bar|length%} で foo|bar の長さが表示できる

simpletag も簡単に使える(・・・が、自分はまだあまりちゃんと使ってない)
コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

コメント 0

コメントの受付は締め切りました

Facebook コメント

トラックバック 0