3

我有一个不解析的模板 - 而是 django 提出:

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

不幸的是,Django 没有透露错误在哪里。有没有工具可以揭示 Django 模板中语法错误的位置?

4

3 回答 3

2

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

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

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

于 2012-04-15T21:08:57.103 回答
2

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

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

例如,看起来像的模板

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

引发错误跟踪堆栈,最后但两个项目内的“节点列表”可能是

nodelist      []

这意味着错误在块 foo 的第一个子节点附近。

于 2012-04-16T03:53:03.250 回答
0

不要认为它会告诉你确切的位置,但 Django 调试工具栏应该在一定程度上有所帮助。

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

游览http://vimeo.com/6640136

于 2012-04-15T21:07:02.987 回答