Jinja2 笔记
大部分摘自网上,方便平时查阅【更新ing…】
介绍
Jinja2:Jinja
是日本寺庙的意思,并且寺庙的英文是temple
和模板的英文template
的发音类似。Jinja2
是默认的仿Django
模板的一个模板引擎,由Flask
的作者开发。它速度快,被广泛使用,并且提供了可选的沙箱模板来保证执行环境的安全,它有以下优点:
- 让前端开发者和后端开发者工作分离。
- 减少
Flask
项目代码的耦合性,页面逻辑放在模板中,业务逻辑放在视图函数中,将页面逻辑和业务逻辑解耦有利于代码的维护。 - 提供了控制语句、继承等高级功能,减少开发的复杂度。
模版
{{ ... }}
:装载一个变量,模板渲染的时候,会使用传进来的同名参数这个变量代表的值替换掉。{% ... %}
:装载一个控制语句。{# ... #}
:装载一个注释,模板渲染的时候会忽视这中间的值。
变量
在模板中添加变量,可以使用(set)语句。
1 |
{% set name='xx' %} |
with
语句来创建一个内部的作用域,将set
语句放在其中,这样创建的变量只在with
代码块中才有效
1 2 3 |
{% with foo = 42 %} {{ foo }} {% endwith %} |
if语句
1 2 3 4 5 6 7 |
{% if kenny.sick %} Kenny is sick. {% elif kenny.dead %} You killed Kenny! You bastard!!! {% else %} Kenny looks okay --- so far {% endif %} |
for语句
1 2 3 |
{% for user in users %} {{ user.username|e }} {% endfor %} |
遍历字典
1 2 3 4 |
{% for key, value in <strong>my_dict.iteritems()</strong> %} <dt>{{ key|e }}</dt> <dd>{{ value|e }}</dd> {% endfor %} |
Jinja2中for循环内置常量
loop.index | 当前迭代的索引(从1开始) |
loop.index0 | 当前迭代的索引(从0开始) |
loop.first | 是否是第一次迭代,返回True\/False |
loop.last | 是否是最后一次迭代,返回True\/False |
loop.length | 序列的长度 |
注意:不可以使用continue
和break
表达式来控制循环的执行。
近期评论