2010-12-06 9 views
7

私は、これらのテンプレートがデザイナーや他のコードに慣れていない人を対象としていることを理解していますが、開発者にとってはテンプレート言語は面倒です。私はテンプレートやテンプレートに渡された辞書やリストを使って繰り返すような非常に簡単なことをやり直す必要があり、うまく動作しないように見えます。私はまだ期待していたように全体の "ドット"表記を動かすことができません(例えば、{{mydict.dictkey}}がforループの中でうまくいきません:S - 私はこれを別の質問として尋ねるかもしれません)私はなぜテンプレートシステムでPythonコードを使うことができないのか分かりません。特に、テンプレートがシンプルなものであれば、これらのテンプレートで使用する必要のあるPythonコードのレベルは、現在のテンプレート言語よりも複雑ではないということになります。だから、これらのデザイナーは、Djangoのテンプレート言語を学ぶよりもずっと多くのPythonを学ぶのに苦労しないでしょう。すでにPythonは普遍的な構文と力を持っていることを知っています。なぜジャンゴのテンプレートは単にPythonコードを使用しないのですか?

何か不足していますか?もしそうなら、私はdjango noobに嘆願し、現在のシステムの多くのメリットについて私に啓発してもらいたいと思います。しかし、それ以外の場合は、私が探しているものよりも多くの他のテンプレートシステムに関する推奨事項はありますか?

+0

短い答え:フレームワークの作家が想像しているような、デザイナの設計者が必ずしもプログラミングの背景を持っているわけではなく、Webアプリケーションプログラマと一緒に、Webアプリケーションプログラマと一緒に作業してください。 – Santa

+1

はこのようなテンプレートシステムのための場所があるようです。実際にはこれがかなり制限されている場合、「デザイナーは悪い」、「レイヤーの分離」でこれを説明しているすべての人が、テンプレートの定義と構築に関連するすべてのパーティーに別の「混乱しやすい」マークアップを追加しています。実際には、このような分離を組織ルールで制限し、マークアップとPythonコードの両方を使用できるコアテンプレートを継承する通常のクラスにすることが、より便利です。 –

+0

ええ、私は完全に確信していません(私はRafeの答えの私のコメントに注意しています)。しかし、私はこれらのことに関してもっと経験があるまで私の判断を留保します:)。ありがとう! – mindthief

答えて

10

ほとんどの人が限られたテンプレート言語に与える理由は、アプリケーションのビジネスロジックとプレゼンテーションを混在させたくないからです(これはMVCの考え方とはうまくいかないでしょう; Djangoを使うと確信していますあなたはこれの利点を理解しています)。

ダニエルグリーンフィールドはan article a few days ago explaining why he likes "stupid template languages"と書いており、多くの人が回答を書いています(で過去数日を参照)。ダニエルが書いたことと他の人たちがどのように答えたかを読んだら、テンプレート言語がPythonを使用できるようにするための議論のアイデアを得るでしょう。

+3

+1を分けている - あなたの主な言語よりも強力ではないテンプレートシステムを持っていなければ、あなたのビジネスルールをHTMLに入れることはあまりにも魅力的です。 MVCは具体的には、プレゼンテーションからロジックを分離することは正常なコードの前提条件です – tobyodavies

+0

うーん、意味があります。だから、これは私がやろうとしていることが実際にテンプレートの中で可能ではないかもしれないということを意味しますか?私はこの問題について、http://stackoverflow.com/questions/4363032/how-to-use-django-template-dot-notation-inside-a-for-loop – mindthief

+3

@mindthiefで説明しています。可能性があります質問)、組み込みではありません。これはテンプレートに入り込むことが「あまりにも複雑」なことを避け、ロジックとプレゼンテーションの分離を強化します。より多くのパワー(複雑さが増し、足で自分を撃たないようにするという柔軟性を提供するかどうか)を選択するかどうかは、あなた次第です(ロジックとコンテンツを強制的に分離します)。 – Cameron

2

Djangoのテンプレート言語に限定されているわけではありません。ビュー機能で好きなテンプレートシステムを自由に使うことができます。しかし、あなたのビュー関数から返すようにHTMLを作成するには問題ありません。 Pythonの世界には、多くのテンプレート実装があります。あなたに適したものを選んで使用してください。

1

懸念の分離。

デザイナーがデザインします。開発者は開発を行います。テンプレートはデザイナーによって書かれています。

デザインと開発は、通常、異なる人が扱う独立した異なる作業領域です。

私は、開発者で、その配偶者がデザイナーである場合、Pythonのテンプレートコードがうまくいくと思います。さもなければ、干渉を最小限に抑えて、それぞれが自分の仕事をしてください。

+0

ええ、もし私がデザイナーだったら、ドット表記法は基本的なpythonを学ぶよりも威圧的ではないでしょう。ありがとう! – mindthief

関連する問題