Ответ тестового клиента Django содержит пустой список шаблонов?

Согласно документам по тестированию Django, объект Response клиента Django содержит «шаблоны», а именно: «Список экземпляров шаблона, используемых для рендеринга конечного контента, в том порядке, в котором они были рендерены. Для каждого шаблона в списке используйте шаблон. имя, чтобы получить имя файла шаблона, если шаблон был загружен из файла. (Имя представляет собой строку, такую ​​как 'admin/index.html'.)"

Однако я получаю пустой список шаблонов, хотя я уверен, что шаблон был обработан.

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

Почему шаблоны пусты? Как посмотреть, какой шаблон был отрендерен?


person Joseph Turian    schedule 30.10.2011    source источник


Ответы (1)


Вы пробовали свой код в интерактивном сеансе? В документации Django говорится:

Хотя * ваш код * [+] будет работать в интерактивном интерпретаторе Python, некоторые функции тестового клиента, особенно функции, связанные с шаблонами, доступны только во время выполнения тестов. Причина этого в том, что средство запуска тестов Django применяет немного черной магии, чтобы определить, какой шаблон был загружен данным представлением. Эта черная магия (по сути, исправление системы шаблонов Django в памяти) происходит только во время выполнения теста.

Так что, если вы запустите его в тестовом прогоне, он должен работать.

[+] Я заменил * приведенный выше пример из документации django на ваш код *, чтобы сделать этот фрагмент более читабельным.

person jazz    schedule 30.10.2011
comment
Да, проблема была в том, что я запускал интерактивный интерпретатор. - person Joseph Turian; 31.10.2011