我对Jinja2比较陌生,想知道是否有一种方法可以使生成的模板打印到控制台或将某些输出重定向到某种流?
Jinja2模板可能包含逻辑,因此有时记录一些信息到某种日志文件或至少打印到控制台会很有用。
这可行吗,还是我在胡说八道?
我对Jinja2比较陌生,想知道是否有一种方法可以使生成的模板打印到控制台或将某些输出重定向到某种流?
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") }}
<p id="hidden-p">{{a_variable}}</p>
<script>
var hiddenP = document.getElementById("hidden-p").innerHTML;
console.log(hiddenP);
</script>