私はいくつかの小さなDjangoプロジェクトを実行しましたが、そのたびにDjangoのテンプレート言語の明らかな制限に見舞われました。ランダムな例として、テンプレートのコンテキストで変数バーとdict fooがある場合、独自のフィルターを作成しない限りfoo[bar]にアクセスできないことを知ってショックを受けました。
これは、ページをデザインする人がプログラマーではない環境向けにDjangoが作成されたためだと読みました。という事は承知しています。
しかし、それは私にとって問題ではないとしましょう。Mako(任意のPython式を実行することもできる)のようなもっと強力なものに切り替えるのではなく、Djangoのテンプレート言語に固執する必要がある理由はありますか?
しばらく前に学校のプロジェクトでマコを使う機会があり、その力がとても気に入りました。たとえば、プロジェクトの一環として、各行とセルの作成がかなり複雑な大きなテーブルを作成する必要がありました。それでも、テンプレートを次のように見せることはできます。
<table>
% for foo in foos:
${makerow(row)}
% endfor
</table>
<%def name="makerow(row)">
<tr>
# Blah blah blah (possibly a call to makecell somewhere)
</tr>
</%def>
多分これはプレゼンテーションと論理の分離の違反です、しかし男の子はそれが素晴らしくてきれいです。サブルーチン!抽象化!良いもの。
そしてフォローアップの質問:代替のテンプレート言語を使用することがDjangoコミュニティによって嫌われていない場合、誰かが提案するものはありますか?私が言ったように、私はマコが本当に好きですが、それは文字通り私がDjango以外で使用した唯一のものです。