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

发布于 12-12 21:52 字数 551 浏览 2 评论 0原文

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

但是,我得到了一个空的模板列表,即使我是。确信模板已渲染。

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

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

According to the Django testing docs, the Django client Response object contains 'templates', which is: "A list of Template instances used to render the final content, in the order they were rendered. For each template in the list, use template.name to get the template's file name, if the template was loaded from a file. (The name is a string such as 'admin/index.html'.)"

However, I am getting an empty list of templates, even though I am confident that a template was rendered.

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

Why is templates empty? How do I see what template was rendered?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

痞味浪人2024-12-19 21:52:59

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

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

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

[+] 我已将 django 文档中的 * 上面的示例 替换为 您的代码 * 使此代码片段更具可读性。

Have you tried your code in a interactive session? The Django documentation says:

Although * your code * [+] would work in the Python interactive
interpreter, some of the test client's functionality, notably the
template-related functionality, is only available while tests are
running.
The reason for this is that Django's test runner performs a bit of
black magic in order to determine which template was loaded by a given
view. This black magic (essentially a patching of Django's template
system in memory) only happens during test running.

So if you run it in a test run, it should work.

[+] I have replaced the * the above example from the django documentation with your code * to make this snippet more readable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文