jinjia2语法

变量

jinjia2中的变量需要借助占位符来显示,举个例子:

{{config}}

在上述例子中,{{}}```是占位符,config是一个变量。 ### 过滤器 过滤器大致相当于一个字符串处理函数,可以对要显示的字符串进行修改。举个例子: ```{{'abc'|upper}}

在上述例子中,upper是一个过滤器,过滤器和要处理的内容用|分开。上述过滤器的用法为将字符串显示为大写。

常用的过滤器有:

  • lower:把字母都转为小写
  • upper:把字母都转为大写
  • title:把每个单词的首字母都变成大写
  • join:进行字符串拼接,比如{{path|join('/')}}
  • replace:替换字符串,比如{{'a1b1c1'|replace('1',' ')}}
  • safe:对字符串不进行转义操作,原样输出。这个过滤器有些危险,使用不慎可能导致注入产生

过滤器是可以连续使用的,比如{{'hello world' | replace('world','guest') | title}}

注释

jinjia2中的注释使用{# #}来表示,两个#中间的内容可以用来写注释。

if语句

jinjia2中的if语句语法格式包括{{% if statement %}}{{% elif statement %}}{{% else %}}形式。最后必须加上{{% endif %}}与前面的标签进行闭合。

下面是if语句用法的一个例子。

1
2
3
4
5
6
7
8
9
10
11
{% if score>=90 %}
优秀
{% elif score>=80 %}
良好
{% elif score>=70 %}
中等
{% elif score>=60 %}
及格
{% else %}
不及格
{% endif %}

循环

jinjia2中只有for循环,没有while循环。并且jinjia2的语法中是没有break和continue的。

jinjia2中的for循环和python一样,可以遍历所有的序列和迭代器。

jinjia2中的循环语句语法格式为{{% for i in xxx %}},最后还需要有结束标签{{% endfor %}}与之闭合。

下面是一个利用for循环进行遍历的一个例子。

数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
people = [
{
'name':'张三',
'age':20,
'sex':'f'
},
{
'name':'李四',
'age':21,
'sex':'m'
},
{
'name':'老王',
'age':35,
'sex':'f'
}
]

jinjia2模版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{# 显示个人信息 #}
<table border="1px">
<tr>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
</tr>
{% for p in people %}
<tr>
<td>{{p.name}}</td>
<td>{{p.age}}</td>

<td>{{p.sex | upper}}</td>
</tr>
{% endfor %}
</table>

结果

姓名 年龄 性别
张三 20 F
李四 21 M
老王 35 F

参考资料

jinjia2模版用法,https://www.jianshu.com/p/f04dae701361

jinjia2过滤器之常用的过滤器,https://www.cnblogs.com/zhongyehai/p/11782585.html

flask jinjia2 for循环一,https://www.cnblogs.com/yingxiongguixing/p/11979127.html

flask jinjia2 逻辑循环if语句,https://www.cnblogs.com/yingxiongguixing/p/11970723.html