5

Django のテスト ドキュメントによると、Django クライアントの Response オブジェクトには、次のような「テンプレート」が含まれています。テンプレートがファイルからロードされた場合、テンプレートのファイル名を取得するための名前 (名前は「admin/index.html」などの文字列です)"

ただし、テンプレートがレンダリングされたと確信しているにもかかわらず、テンプレートの空のリストを取得しています。

from django.test.client import Client
c = Client()
response = c.post('/signup/', {'email': 'a@b.com', 'password1': 'smith', 'password2': 'smith'}, follow=True)
print response.templates
# []

テンプレートが空なのはなぜですか? レンダリングされたテンプレートを確認するにはどうすればよいですか?

4

1 に答える 1

6

対話型セッションでコードを試しましたか? Djangoのドキュメントには次のように書かれています:

* あなたのコード * [+] は Python インタラクティブ インタープリターで動作しますが、テスト クライアントの機能の一部、特にテンプレート関連の機能は、テストの実行中にのみ使用できます。この理由は、Django のテスト ランナーが、特定のビューによってどのテンプレートが読み込まれたかを判断するために、ちょっとした黒魔術を実行するためです。このブラック マジック (基本的にはメモリ内の Django のテンプレート システムへのパッチ適用) は、テストの実行中にのみ発生します。

したがって、テスト実行で実行すると、動作するはずです。

[+]上記の例の *を置き換えましたdjangoのドキュメントからあなたのコード *を変更して、このスニペットを読みやすくします。

于 2011-10-30T21:29:48.583 に答える