你是如何找到django模板错误的?

时间:2012-04-15 16:48:27

标签: django django-templates

我有一个不解析的模板 - 而是django引发:

TemplateSyntaxError: Could not parse the remainder: '"{%' from '"{%'

不幸的是,Django没有透露错误的位置。是否有可以在Django模板中公开语法错误位置的工具?

3 个答案:

答案 0 :(得分:2)

django-extensions runserver_plus命令中的交互式调试器将更容易内省模板节点内容和模板源,以及查看上下文变量。

除此之外,请确保templatetag是可导入的,不会引发错误。

不幸的是,我没有比这更简单的方法。

答案 1 :(得分:2)

好问题,您可以再次检查错误追溯:

  • 突出显示的模板行是损坏代码所在的节点的开头。我将节点称为父节点
  • tracestack中的最后两个项目是找到错误的关键。检查 Local vars 中的变量
    • 'nodelist' - 错误之前的节点列表,在父节点内。
    • 'compiled_result' - 如果有的话,是错误之前的最后一个完整节点(不包括TextNode)

例如,模板看起来像

{% block foo %}{{ "{% }} 

引发错误tracestack,最后但两个项目中的'nodelist'可能是

nodelist      []

这意味着错误发生在块foo的第一个子节点周围。

答案 2 :(得分:0)

不要认为它告诉你确切的位置,但Django Debug Toolbar在某种程度上应该有所帮助。

https://github.com/django-debug-toolbar/django-debug-toolbar

巡回演出http://vimeo.com/6640136