【发布时间】:2011-01-05 05:33:43
【问题描述】:
我是 Django 新手,我想知道是否有一种方法可以转储模板中可用的所有变量以进行调试。在 Python 中,我可能会使用 locals() 之类的东西,是否有与默认模板引擎等效的东西?
注意:假设我无权访问此问题的视图。
【问题讨论】:
我是 Django 新手,我想知道是否有一种方法可以转储模板中可用的所有变量以进行调试。在 Python 中,我可能会使用 locals() 之类的东西,是否有与默认模板引擎等效的东西?
注意:假设我无权访问此问题的视图。
【问题讨论】:
Ned 和 blaine 的答案都很好,但如果你真的想达到你所要求的,可以使用模板标签:
{% debug %}
context_processor.debug 中的更多信息包括:
如果启用此处理器,每个 RequestContext 都将包含 debug 和 sql_queries 变量——但前提是你的 DEBUG 设置 设置为 True 和请求的 IP 地址 (
request.META['REMOTE_ADDR']) 处于INTERNAL_IPS设置
与 Peter G 的建议类似,我经常在具有 display:none 的页面末尾使用 <div id="django-debug"><pre>{% debug|escape %}</pre></div> 块,但我可以检查以进行调试。
【讨论】:
{% filter force_escape %}{% debug %}{% endfilter %}
您可能还对django-template-repl 感兴趣,这是一个用于 Django 模板语言的 readline shell。您可以将{% load repl %}{% pdb %} 拖放到您的模板中并获得一个交互式调试器。
【讨论】:
虽然其他成员提供的两种解决方案可以让您访问模板中的所有变量,但我认为必须有一种更简单的方法(顺便说一句,感谢您的回复)。
这是查找传递给模板的所有变量的简单方法。
模板的调试输出包含一个名为“TraceBack”的部分。找到您的视图的回溯(在我的例子中从顶部开始的第二个条目),然后单击“Local vars”。这一切都在那里。
【讨论】:
安装Django Debug Toolbar。它为您提供所有这些以及更多。
【讨论】: