在我的init.py文件中:
app.jinja_env.trim_blocks = True
app.jinja_env.lstrip_blocks = True
我希望在我的jinja2模板中,空白将被修剪,以便:
<div>
{% if x == 3 %}
<small>{{ x }}</small>
{% endif %}
</div>
将呈现为:
<div>
<small>3</small>
</div>
相反,我得到了额外的空白:
<div>
<small>3</small>
</div>
为什么trim_blocks和lstrip_blocks不修剪空白?
3条答案
按热度按时间9rygscc11#
jinja 2加载您的模板之前,您的环境设置似乎没有**设置。
class jinja2.Environment([options])
...如果这个类的示例不是共享的,并且**如果到目前为止还没有加载模板,则可以修改它们。**在加载第一个模板之后对环境进行修改将导致令人惊讶的效果和未定义的行为。
http://jinja.pocoo.org/docs/dev/api/#jinja2.Environment
检查代码的顺序/结构,查看环境设置和模板是如何加载的。
顺便说一句,jinja 2的空白控制确实可以像预期的那样工作,而没有环境和加载的复杂性:
我没有用过jinja 2,但扫描文档后,加载顺序似乎可疑。
kknvjkwl2#
您必须使用减号转义{% if %}和{% endif %}语句,以取消空行:
oug3syen3#
如果你的代码在macro.html中,你必须手动添加**"-"**,不能使用下面的代码。