1

私はdjango自身のテストクライアント(でdjango.test.client)を使用してresponse.contextで属性をテストしようとしています。

私は5を取り戻しresponse.contextます。テンプレートパーツごとに1つに見えるように、ネストされたテンプレートパーツを削除すると(たとえば{% include "sometemplate.html" %})、ベーステンプレートから、返されるコンテキストの量が減少するため)。

テンプレートレンダラーに渡される変数はresponse.context[0].dicts[0]

レンダリングされたテンプレートの名前は、コンテキストオブジェクトのどこかに保存されていますか?

4

1 に答える 1

2

いいえ。コンテキスト (基本的に辞書の配列) は、テンプレートの名前とともにテンプレート エンジンに渡されます。テンプレート内からテンプレート名を含むコンテキスト値を設定することは可能ですが、それは自動的には行われません。

django/template/loader_tags.py のコードを見ると、コンテンツをレンダリングclass BlockNodeするcontext.push()前とレンダリング後に が実行されていることに気付きましcontext.pop()た。これにより、1 つのブロック置換内で値を設定し、別のブロック置換内でその値を使用することができなくなります。Django テンプレート言語は {% with %} タグ (興味深いことに、{% block %} タグと同じプッシュ/ポップを行う) を使用する以外に値の割り当てを直接サポートしていないため、これはそれほど頻繁には発生しません。 )。

class IncludeNodesubclassesclass Nodeですがclass BlockNode、その場合、コンテキストのネストが行われているようには見えません。

于 2009-12-26T17:20:17.567 に答える