2012-04-15 52 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的第一個子節點的附近。