0

Python では、formという名前のフィールドを持つ Django フォームがある場合、属性アクセス構文を使用してフィールドにアクセスfooすることはできません。form.foo代わりに を使用する必要がありますform.fields['foo']

ただし、テンプレートでは、テンプレート内{{ form.foo }}の任意のオブジェクトに対して機能する通常の属性アクセス構文を使用して、フィールドをレンダリングするために使用できます (通常は使用します)。

{{ form.foo }}Pythonform.fooが機能しないのに、なぜ/どのようにテンプレートが機能するのですか? テンプレートをレンダリングするときに Django が行うのは少し特別な処理ですか? それとも単純なことを誤解しているだけですか?

編集: Django のテンプレート言語は Python ではなく、Python とは多くの違いがあることを知っています。なぜ{{ form.foo }}構文が機能するのか、および/またはフォームの場合にどのように実装されるのかに興味があります。結局のところ、通常、テンプレートの{{ object.attribute }}構文は Python のobject.attribute構文と同じように機能しますが、フォームの場合は特殊なケースとして扱われるようです。

4

2 に答える 2

1

あなたが参照しているテンプレートはPythonではありません.Pythonプログラムによって解析される別の専用のマークアップ言語で書かれていますが、それ自体はPythonで書かれておらず、直接実行されていません. テンプレート言語は、フォーム フィールドにアクセスするための便利な構文を提供しますが、Python 自体の動作とは関係ありません。

于 2012-09-03T05:02:27.723 に答える