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

Jos*_*ian 5 django django-templates django-testing

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

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

jaz*_*azz 5

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

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

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

[+]我已经取代了*上面的例子 来自django文档 你的代码*使这个代码段更具可读性.