【问题标题】:Django test client Response contains empty list of templates?Django 测试客户端响应包含空的模板列表?
【发布时间】:2011-12-18 08:54:28
【问题描述】:

根据 Django 测试文档,Django 客户端响应对象包含“模板”,即:“用于渲染最终内容的模板实例列表,按渲染顺序排列。对于列表中的每个模板,如果模板是从文件中加载的,则使用 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
# []

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

【问题讨论】:

    标签: django django-templates django-testing


    【解决方案1】:

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

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

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

    [+] 我已将 django 文档中的 * 上述示例 替换为 your code * 以使这个 sn-p 更可读。

    【讨论】:

    • 是的,问题是我是从交互式解释器运行的。
    猜你喜欢
    • 2019-06-13
    • 1970-01-01
    • 2013-01-01
    • 2011-05-07
    • 1970-01-01
    • 2011-06-13
    • 2018-09-20
    • 2012-01-20
    • 2013-11-23
    相关资源
    最近更新 更多