20

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

由于 Jinja2 模板内部可能有逻辑,我认为有时将一些信息记录到某种日志文件中会很有用,或者至少打印到控制台。

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

4

3 回答 3

19

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

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

于 2013-02-09T01:00:01.693 回答
12

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

在蟒蛇/烧瓶中:

@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") }}
于 2017-03-19T15:34:10.980 回答
-1

我将有一个带有 id 集的 HTML 元素和该元素的 hidden 属性。然后像这样使用JavaScript

<p id="hidden-p">{{a_variable}}</p>
<script>
    var hiddenP = document.getElementById("hidden-p").innerHTML;
    console.log(hiddenP);
</script>
于 2019-02-05T07:24:56.503 回答