jinja2模板中有个空白控制是什么意思?
没看懂{% block %}{% endblock %} 跟{%- block -%}{%- endblock -%}之间的区别
asfor
9 years, 2 months ago
Answers
其实这里的“空白”翻译成“空白字符”会更容易理解一些。
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