jinja2模板中有个空白控制是什么意思?


图片描述

没看懂{% block %}{% endblock %} 跟{%- block -%}{%- endblock -%}之间的区别

flask jinja2

asfor 9 years, 2 months ago

其实这里的“空白”翻译成“空白字符”会更容易理解一些。
jinja模板会把源码中空白字符原封不动地返回,所以像下面这样的代码


 {% for item in seq %}
    {{ item }}
{% endfor %}

其实可以看成"{% for item in seq %}\n\t{{ item }}\n{% endfor %}"。注意到了吗,这里面语句中间是有"\n\t"和"\n"的,jinja会把这两个空白字符也进行返回,这就会让item的上下两行成为空行,像下面这样:


 item1


item2


item3

...

所以我们要加上一个"-"号来去掉这些空白字符。


 {% for item in seq -%}
    {{ item }}
{%- endfor %}

这样写之后,这块代码就成了"{% for item in seq -%}\n\t{{ item }}\n\t{%- endfor %}"。jinja在识别到"-%"或"%-"时,就会分别去掉接在后面或前面的空白字符,输出就成了:


 item1item2item3.....

顺便附上jinja的英文文档地址: http://jinja.pocoo.org/docs/dev/templates/#whitespace-control
看中文文档不明白的时候找英文文档看看是个好的选择。

若离Evans answered 9 years, 2 months ago

Your Answer