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

如何获取Django模板中定义的所有变量?,django,django-templates,Django,Django Templates,我是Django的新手,我想知道是否有一种方法可以转储模板中所有可用的变量以进行调试。在Python中,我可能会使用类似于locals()的东西,默认模板引擎是否有等价物 注意:假设我没有访问此问题的视图的权限。安装。它为您提供了所有这些以及更多功能。您可能还对Django模板语言的readlineshell感兴趣。你可以把一个{%load repl%}{%pdb%}放到你的模板中,然后得到一个交互式调试器。而其他成员提供的两个解决方案可以让你访问模板中的所有变量,我认为应该有一个更简单的方法(

我是Django的新手,我想知道是否有一种方法可以转储模板中所有可用的变量以进行调试。在Python中,我可能会使用类似于
locals()
的东西,默认模板引擎是否有等价物


注意:假设我没有访问此问题的视图的权限。

安装。它为您提供了所有这些以及更多功能。

您可能还对Django模板语言的readlineshell感兴趣。你可以把一个
{%load repl%}{%pdb%}
放到你的模板中,然后得到一个交互式调试器。

而其他成员提供的两个解决方案可以让你访问模板中的所有变量,我认为应该有一个更简单的方法(谢谢你的回答,顺便说一句)

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

  • 在要检查的模板中引入错误。添加不存在的标记是有效的
  • 确保已启用调试
  • 浏览到加载模板的页面。(您的站点必须通过runserver或其他方式运行)

  • 模板的调试输出包含一个名为“回溯”的部分。找到您视图的回溯(在我的例子中是从顶部开始的第二个条目),然后单击“localvars”。Ned和blaine的答案都很好,但是如果你真的想达到你的要求,有一个模板标签:

    {%debug%}

    有关更多信息,请参阅:

    如果启用此处理器,则每个RequestContext都将包含调试 和sql\u查询变量,但仅当您的调试设置 设置为True,请求的IP地址(
    request.META['REMOTE\u ADDR']
    ) 处于内部\u IPS设置中


    与Peter G的建议类似,我经常在页面末尾使用一个
    {%debug | escape%}
    块,该块有
    显示:无
    ,但我可以检查以进行调试。

    为了让这更具可读性,可以使用:{%filter force|escape%}{%debug%}{%endfilter%}@PeterG事实上,我自己实际上也是这么做的!有时会将其放入底部页面元素等。虽然这种方法适用于一次性调试,但我发现我问了一个问题:“此模板中有哪些变量可用?”这足以让@ned batchelder提到的安装django调试工具栏的努力变得值得。顺便说一句,安装它不需要花费太多精力(安装软件包,适当地更新settings.py),默认配置适用于大多数情况。