3

解析しないテンプレートがあります-代わりにdjangoが発生します:

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

残念ながら、Djangoはエラーがどこにあるかを開示していません。Djangoテンプレートの構文エラーの場所を開示できるツールはありますか?

4

3 に答える 3

2

良い質問です。エラー トレースバックをもう一度確認できます。

  • 強調表示されたテンプレート行は、壊れたコードが存在するノードの開始です。ノードを親ノードと呼びます
  • tracestack の最後から 2 つ目の項目が、エラーを見つけるための鍵です。ローカル変数内の変数を確認します
    • 'nodelist' -- 親ノード内のエラー前のノードのリスト。
    • 'compiled_result' -- 存在する場合は、エラーの前の最後の完全なノード (TextNode を含まない) です。

たとえば、次のようなテンプレート

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

エラー tracestack を発生させます。最後から 2 番目の項目内の「nodelist」は、次の可能性があります。

nodelist      []

これは、エラーがブロック foo の最初の子ノードの周りにあることを意味します。

于 2012-04-16T03:53:03.250 に答える
2

django-extensionsrunserver_plusコマンドの対話型デバッガーにより、テンプレート ノードのコンテンツとテンプレート ソースのイントロスペクト、およびコンテキスト変数の調査が容易になります。

それ以外は、templatetag がインポート可能であり、エラーが発生しないことを確認してください。

残念ながら、私はそれより簡単な方法はありません。

于 2012-04-15T21:08:57.103 に答える
0

正確な場所がわかるとは思わないが、Djangoデバッグツールバーはここである程度役立つはずです。

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

ツアーhttp://vimeo.com/6640136

于 2012-04-15T21:07:02.987 に答える