Jinja2初探

时间:2022-07-22
本文章向大家介绍Jinja2初探,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

文档

[官方文档] http://jinja.pocoo.org/

[源码地址] https://github.com/pallets/jinja

示例

➜  jinja2Demo tree
.
├── __init__.py
└── templates
    └── jinja2.html

1 directory, 3 files

Jinja2 使用一个名为 Environment 的中心对象。这个类的实例用于存储配 置、全局对象,并用于从文件系统或其它位置加载模板。

大多数应用在应用初始化的时候创建一个Environment对象,并用它来加载模板。

具体代码

# __init__.py

# -*- coding: UTF-8 -*-

from jinja2 import Environment, PackageLoader

__author__ = 'lpe234'


def main():
    env = Environment(loader=PackageLoader('jinja2Demo', package_path='templates'))

    # 变量开始/结束标识
    env.variable_start_string = '[['
    env.variable_end_string = ']]'

    # 过滤器
    env.filters['xx'] = lambda _: '__'+_+'__'

    # 获取模板
    template = env.get_template('jinja2.html')
    
    name = 'Hello'
    lists = range(5)
    # 渲染模板
    print template.render(name=name, lists=lists)
    pass

if __name__ == '__main__':
    main()

# templates/jinja2.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

[[ name | xx ]]

{% for _ in lists %}
    [[ _ ]]<br>
{% endfor %}
</body>
</html>

输出

python2.7 ./jinja2Demo/__init__.py
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

__Hello__


    0<br>

    1<br>

    2<br>

    3<br>

    4<br>

</body>
</html>

Process finished with exit code 0