根据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
# []
为什么模板是空的?如何查看呈现的模板?
答案 0 :(得分:5)
您是否在交互式会话中尝试过代码? Django documentation说:
虽然 *您的代码* [+]可以在Python交互式中使用 解释器,一些测试客户端的功能,特别是 与模板相关的功能仅在测试时可用 运行。 这样做的原因是Django的测试运行器执行了一些 黑魔法,以确定给定的加载了哪个模板 视图。这个黑魔法(基本上是Django模板的补丁 内存中的系统)仅在测试运行期间发生。
因此,如果您在测试运行中运行它,它应该可以工作。
[+]我已使用 替换django文档中的 *上述示例 您的代码* ,以使此代码段更具可读性。