41

これまでのところ、Mako テンプレートが正しくコーディングされていない場合、使用可能なトレースバックを生成することは不可能であることがわかりました。

コードのすべての行を繰り返す以外に、テンプレートをデバッグする方法はありますか?

4

6 に答える 6

45

Makoは、実際には、テンプレートのエラーを追跡するための非常に優れた方法を提供します。

from mako import exceptions

try:
    template = lookup.get_template(uri)
    print template.render()
except:
    print exceptions.html_error_template().render()
于 2009-02-11T09:31:33.217 に答える
4

Flask-Makoのソースを見ると、文書化されていない という構成パラメーターが見つかりましたMAKO_TRANSLATE_EXCEPTIONS

これをFalseFlask アプリ構成で に設定すると、テンプレートから素晴らしい例外が発生します。これは、ソースを編集する必要なく、@Mariano が提案したのと同じことを達成します。どうやら、このパラメーターはマリアーノの回答の後に追加されたようです。

于 2014-02-22T06:18:39.790 に答える
1

それらをバラバラに分解し、問題が見つかったら再び組み立てます。

よくありませんが、大きくて複雑なテンプレートで何が問題だったのかを判断するのは非常に困難です。

于 2008-12-24T01:49:17.417 に答える
0

フラスコマコを使用すると、TemplateErrorの生成をスキップして、例外を渡す方が簡単だと思います。つまり、flask_mako.pyで、TemplateErrorを作成する部分をコメントアウトし、レイズを実行します。

def _render(template, context, app):
 """Renders the template and fires the signal"""
app.update_template_context(context)
try:
    rv = template.render(**context)
    template_rendered.send(app, template=template, context=context)
    return rv
except:
    #translated = TemplateError(template)                                                                                                                 
    #raise translated                                                                                                                                     
    raise

}

次に、テンプレートの行番号とともに問題を引き起こした通常のPython例外が表示されます。

于 2012-11-09T22:07:43.000 に答える