Jinja2的打印到控制台或日志

问题描述 投票:12回答:3

我有点新的Jinja2和,我想知道如果有一种方法,使模板生成,同时,打印到控制台或重定向一些输出某种流?

由于Jinja2的模板可能有内部逻辑,我认为这将是有时候需要记录一些信息在某种日志文件的,或者至少让打印到控制台。

这是可能的,或者我只是在说垃圾?

python template-engine jinja2
3个回答
15
投票

我想你可以使用过滤器(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}}...

请记住,以消除生产代码调试!


8
投票

一个类似的但略微不同的方法使用上下文处理器:

在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") }}

-1
投票

我会用一个id集HTML元素的隐藏元素的属性。然后使用JavaScript作为这样

<p id="hidden-p">{{a_variable}}</p>
<script>
    var hiddenP = document.getElementById("hidden-p").innerHTML;
    console.log(hiddenP);
</script>
© www.soinside.com 2019 - 2024. All rights reserved.