如何获取Django模板中定义的所有变量?

时间:2010-01-14 19:25:36

标签: django django-templates

我是Django的新手,我想知道是否有办法将所有可用的变量转储到模板以进行调试。在Python中,我可能会使用像locals()这样的东西,是否有类似于默认模板引擎的东西?

注意:假设我出于此问题的目的无法访问该视图。

4 个答案:

答案 0 :(得分:59)

Ned和blaine的答案都很好,但是如果你真的想达到你所要求的,那就是它的模板标签:

{% debug %}

Builtins: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)。

这是查找传递给模板的所有变量的简单方法。

  1. 在要检查的模板中引入错误。添加不存在的标签有效。
  2. 确保调试已开启。
  3. 浏览到加载模板的页面。 (您的站点必须通过runserver或其他方式运行)。
  4. 模板的调试输出包含一个名为“TraceBack”的部分。找到您的视图的回溯(在我的案例中从顶部开始的第二个条目),然后单击“Local vars”。它就在那里。