Django测试客户端响应包含空模板列表?

时间:2011-10-30 21:13:49

标签: django django-templates django-testing

根据Django测试文档,Django客户端Response对象包含“templates”,它是:“用于呈现最终内容的Template实例列表,按照呈现的顺序。对于列表中的每个模板,如果模板是从文件加载的,则使用template.name获取模板的文件名。(名称是一个字符串,例如'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
# []

为什么模板是空的?如何查看呈现的模板?

1 个答案:

答案 0 :(得分:5)

您是否在交互式会话中尝试过代码? Django documentation说:

  

虽然 *您的代码* [+]可以在Python交互式中使用   解释器,一些测试客户端的功能,特别是   与模板相关的功能仅在测试时可用   运行。   这样做的原因是Django的测试运行器执行了一些   黑魔法,以确定给定的加载了哪个模板   视图。这个黑魔法(基本上是Django模板的补丁   内存中的系统)仅在测试运行期间发生。

因此,如果您在测试运行中运行它,它应该可以工作。

[+]我已使用 替换django文档中的 *上述示例 您的代码* ,以使此代码段更具可读性。