どんなデバッグの真子のテンプレートはどこですか?
質問
これまでがその場で発音を確認することができなくな作用tracebacksが真子のテンプレートなコードを修正。
必要があります。デバッグテンプレートも繰り返し処理毎にラインのコードについて教えてください。
解決
マコは、実際には、テンプレート内のエラーを追跡するために非常に素晴らしい方法を提供しますのます:
from mako import exceptions
try:
template = lookup.get_template(uri)
print template.render()
except:
print exceptions.html_error_template().render()
他のヒント
フラスコ-まこのソースを見ると、私はMAKO_TRANSLATE_EXCEPTIONS
と呼ばれる文書化されていない設定パラメータを見つけました。
あなたのフラスコアプリの設定でFalse
に設定して、あなたはテンプレートから湧き上がっ素敵な例外を取得します。これは、ソースを編集しなくても、@Marianoが示唆したように同じことを達成します。どうやら、このパラメータはマリアーノの答えの後に追加されました。
私は作品にそれらを打破し、私は問題を発見したときに作品を再構築ます。
良くないが、それは大きな、複雑なテンプレートで何が悪かったのか伝えることは本当に難しいます。
flask_makoを使用して、私はそれが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の例外が表示されます。
組み合わせの上の答えを自分の特別なソース:
from flask.ext.mako import render_template as render_template_1
from mako import exceptions
app.config['MAKO_TRANSLATE_EXCEPTIONS'] = False # seems to be necessary
def render_template(*args, **kwargs):
kwargs2 = dict(**kwargs)
kwargs2['config'] = app.config # this is irrelevant, but useful
try:
return render_template_1(*args, **kwargs2)
except:
if app.config.get('DEBUG'):
return exceptions.html_error_template().render()
raise
ラップ、株式"render_template"機能:
- チ例外、および
- 場合はデバッグ、描画の再
- ない場合にはデバッグを上げていき、例外もでログイン
- 作configからのアクセスページ(不適合)
所属していません StackOverflow