5

根据 Django 测试文档,Django 客户端响应对象包含“模板”,即:“用于呈现最终内容的模板实例列表,按照它们呈现的顺序。对于列表中的每个模板,使用模板。 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
# []

为什么模板是空的?如何查看渲染的模板?

4

1 回答 1

6

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

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

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

[+] 我已经替换了上面例子中的 *来自 django 文档您的代码 *使此代码段更具可读性。

于 2011-10-30T21:29:48.583 回答