web-dev-qa-db-ja.com

jinja2をコンソールまたはロギングに出力

私はJinja2に少し慣れていないので、生成中にテンプレートを作成してコンソールに出力したり、出力をある種のストリームにリダイレクトしたりする方法があるかどうか疑問に思っていますか?

Jinja2テンプレートにはロジックが含まれている可能性があるため、情報をある種のログファイルにログインするか、少なくともコンソールに出力すると便利な場合があると思います。

これは可能ですか、それとも私はゴミについて話しているだけですか?

15
Javier Novoa C.

フィルタ( http://jinja.pocoo.org/docs/api/#custom-filters )または拡張機能( http://jinja.pocoo。 org/docs/extensions /#adding-extensions )。アイデアは、フィルターまたは拡張機能をコンソールに直接印刷することです。

テストされていませんが、フィルターは次のようになります。

def debug(text):
  print text
  return ''

environment.filters['debug']=debug

として使用される:

...<p>Hello world!</p> {{"debug text!"|debug}}...

本番コードのデバッグを削除することを忘れないでください!

15
dmoreno

コンテキストプロセッサを使用した類似しているがわずかに異なるアプローチ:

python /フラスコ:

@app.context_processor
def utility_functions():
    def print_in_console(message):
        print str(message)

    return dict(mdebug=print_in_console)

Jinja2では、次のようにどこでも使用できます。

{{ mdebug("any text or variable") }}
8
Paddy V