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