2012-04-15 93 views
3

我有不分析模板 - 而不是Django的提出:你如何找到Django模板错误?

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

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

回答

2

交互式调试runserver_plus命令将使它更容易自省模板节点内容和模板源,以及考虑上下文变量。

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

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

+0

是的,我试过了,但它并没有真正产生比错误信息中更多的信息。 – Marcin 2012-04-15 21:11:27

+0

您是否能够在每个轨道线上启动交互式调试器? (右边有一个图标) – bmihelac 2012-04-16 05:51:26

+0

是的,就像我说的那样,直到包含整个文本的框架才显示出具体的东西。 – Marcin 2012-04-16 06:41:07

2

好问题,你可以再次检查错误追踪:

  • 突出显示的模板行是在其内部断码所在的节点开始。我将这个节点称为父节点
  • 跟踪堆栈中的最后两项是找到错误的关键。检查其内部变量Local vars
    • 'nodelist' - 错误之前的节点列表,位于父节点内部。
    • 'compiled_result' - 如果有的话,是最后一个完整节点错误

例如之前(不包括TextNode),模板看起来像

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

加薪一个错误跟踪堆栈,最后但两个项目中的'nodelist'可能是

nodelist  [] 

Wh ich表示错误位于块foo的第一个子节点的附近。