1.介绍
Jinja2是python的一种模板语言,以Django的模板语言为原本,和Django的模板语言有很多相似之处,同时Jinja本身也是一种系统的、完整的Python模板语言。
2.为什么需要模板语言
在html中写for if或者其他流程控制语句?
在html中使用include、extend等方法复用html?
…
考虑到我们用Python做web开发的情况,首先我们既想后台业务逻辑的代码层次清晰,又要前后端代码尽量分离,在python层拿到的数据,需要显示到HTML中,比如下面这样:
有很多个tr需要生成,这就用到了模板语言了,上图的数据显示用Jinja来做就是:
{% for invoice in invoices %}
<tr>
<td>{{invoice.id}}</td>
<td>{{invoice.create_time}}</td>
<td>{{invoice.start_date}}</td>
<td>{{invoice.end_date}}</td>
<td>{{invoice.username}}</td>
<td>${{invoice.revenue}}</td>
<td>${{invoice.payout}}</td>
<td>${{invoice.profit}}</td>
...
</tr>
{% endfor %}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
当然,这只是Jinja2一个非常base的应用,在实际web开发中,如果再结合了前端的技术,将会使web开发事半功倍。模板语言主要用于生成HTML代码,另外,你也可以灵活运用模板的特性,结合Python用于运维中,运维利器Ansible就用到了Jinja2,可以用来生成配置文件.
3.Prerequisites
Jinja2支持Python2.6.x,2.7.x,>= 3.3,
如果使用的是Python3.2,可以使用jinja2 2.6,因为在jinja2 2.7中移除了对Python3.2的支持.
4.安装
1.pip或easy_install
easy_install Jinja2
or
pip install Jinja2
- 1
- 2
- 3
2.下载源文件
[https://pypi.python.org/pypi/Jinja2]
python setup.py install
- 1
3.安装开发版
https://github.com/mitsuhiko/jinja2
step 1.git clone git://github.com/mitsuhiko/jinja2.git
step 2. cd jinja2
step 3. ln -s jinja2 /usr/lib/python2.X/site-packages
其中step3也可以执行 python setup.py develop
5.Useage
import jinja2
1.配置模板文件搜索路径
TemplateLoader = jinja2.FileSystemLoader(searchpath=’/xxx’)
2.创建环境变量
TemplateEnv = jinja2.Environment(loader=TemplateLoader)
3.加载模板,渲染数据
template = TemplateEnv.get_template(template_name)
html = template.render(**kw)
Refs:
1.http://jinja.pocoo.org/docs/dev