Jinja2模板引擎语法
模板案例
eg:
<!doctype html>
<title>Hello template</title>
{% if name %}
<h1>Hello {{ name }}!</h1>
{% else %}
<h1>Hello flask!</h1>
{% endif %}
从上面的例子可以发现:
模板表达式是包含在分割符{{}}内
模板的控制语句都是包含在分割{% %}中
模板注释都是包含在分隔符{# #}中
- 变量 : 视图传递过来的数据 {{ 变量名称 }}
- 标签 : 就是python中的循环\分支结构...
表达式分类
表达式一般分为以下几种:
表达式种类 | 举例 |
---|---|
变量(最常用) | {{name}} |
基础类型( 字符串,数值,列表,元祖,字典,布尔值) | 一般配合表达式使用{{ 'string' }} |
运算表达式(算术与逻辑) | {{ False and True }} {{ 2 + 3 }} |
过滤器' | ' ,测试器' is ' | 一般配合表达式 |
函数调用 | {{ func( ) }} |
“in”操作符 | {{ 1 in [1,2,3] }} |
字符串连接符”~” | {{ 'like' }} |
变量过滤器
变量的值可以使用过滤器修改。过滤器在添加变量名之后,两者之间以竖线分隔。例如,下述模板把name变量的值变成首字母大写的形式:
Hello, {{name|capitalize}}
下面是Jinja2变量过滤器
| 过滤器名 | 说明 |
| ---- | ---- | ---- |
| safe | 渲染值时不转义 |
| capitalize| 把值的首字母转换成大写,其他字母转换成小写|
| lower| 把值转换成小写形式|
| upper| 把值转换成大写形式|
| title| 把值中每个单词的首字母都转换成大写|
| trim | 把值首尾空格删掉|
| striptages|渲染之前把值中所有的HTML标签都删掉|
控制结构
在模板中使用条件判断语句
{% if user %}
Hello, {{ user }} !
{% else %}
Hello, Stranger !
{% endif %}
for循环渲染一组元素
<ul>
{% for comment in comments %}
<li>{{ comment }}</li>
{% endfor %}
</ul>