jinja2打印到控制台或日志记录

时间:2013-02-09 00:17:02

标签: python template-engine jinja2

我是Jinja2的新手,我想知道是否有办法制作模板,同时生成,打印到控制台或将某些输出重定向到某种流?

由于Jinja2模板里面可能有逻辑,我认为将某些信息记录到某种日志文件中或者至少打印到控制台是有用的。

这是可能还是我只是说垃圾?

3 个答案:

答案 0 :(得分:13)

我认为您可以使用过滤器(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}}...

请记住删除生产代码的调试!

答案 1 :(得分:7)

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

在python / flask中:

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

答案 2 :(得分:-1)

我将有一个HTML元素,该元素具有一个ID集,该元素的属性为hidden。然后像这样使用JavaScript

<p id="hidden-p">{{a_variable}}</p>
<script>
    var hiddenP = document.getElementById("hidden-p").innerHTML;
    console.log(hiddenP);
</script>