2011-10-30 38 views
3

根据Django测试文档,Django客户端Response对象包含'templates',它是:“用于呈现最终内容的模板实例列表,按照它们的呈现顺序对列表中的每个模板使用如果模板是从文件中加载的,则可以使用template.name来获取模板的文件名(该名称是一个字符串,例如'admin/index.html'。)“Django测试客户端响应包含模板的空列表?

但是,我得到一个空的列表模板,尽管我相信模板已经呈现。

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

为什么模板是空的?我如何看到模板被渲染?

回答

5

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

虽然*你的代码* [+]将在Python交互 解释工作,一些测试客户端的功能,特别是 模板相关的功能,仅可同时测试正在运行 。 之所以这样做,是因为Django的测试运行员执行了一些 黑魔法,以确定给定的 视图加载了哪个模板。这个黑魔法(本质上是Django模板 在内存中的修补)只在测试运行时发生。

所以,如果你在测试运行中运行它,它应该工作。

[+]我已经取代了*上面的例子从Django文档与代码*使此片段的可读性。

+0

是的,问题是我从交互式解释器运行。 –