【发布时间】:2013-02-09 00:17:02
【问题描述】:
我是 Jinja2 的新手,想知道是否有办法让模板在生成时打印到控制台或将某些输出重定向到某种流?
由于 Jinja2 模板内部可能有逻辑,我认为有时将一些信息记录到某种日志文件中会很有用,或者至少打印到控制台。
这是可能的还是我只是在说垃圾?
【问题讨论】:
标签: python template-engine jinja2
我是 Jinja2 的新手,想知道是否有办法让模板在生成时打印到控制台或将某些输出重定向到某种流?
由于 Jinja2 模板内部可能有逻辑,我认为有时将一些信息记录到某种日志文件中会很有用,或者至少打印到控制台。
这是可能的还是我只是在说垃圾?
【问题讨论】:
标签: python template-engine jinja2
我认为您可以使用过滤器 (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}}...
记得删除生产代码的调试!
【讨论】:
使用上下文处理器的类似但略有不同的方法:
在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") }}
【讨论】:
我将有一个带有 id 集的 HTML 元素和该元素的 hidden 属性。然后像这样使用JavaScript
<p id="hidden-p">{{a_variable}}</p>
<script>
var hiddenP = document.getElementById("hidden-p").innerHTML;
console.log(hiddenP);
</script>
【讨论】: