Jinja2模块介绍

介绍

Jinja2是python开发中常见的模板系统,我们可以通过调用模板并传递参数来实现生成配置文件或者HTML页,此文档主要介绍生成配置文件。

使用方法

方式一:字符串模板
from jinja2 import Template

vlan_var = 101
template = Template('vlan {{id}}\n'
                    'name VLAN_{{id}}')
vlan_output = template.render(id=vlan_var)
方式二:PackageLoader 从python包中加载模板。

class PackageLoader(package_name, package_path=‘templates’,
encoding=‘utf-8’, cache_size=50, auto_reload=True)

from jinja2 import PackageLoader,Environment

env = Environment(loader=PackageLoader('python_project','templates'))    # 创建一个包加载器对象
 
template = env.get_template('bast.html')    # 获取一个模板文件
template.render(name='daxin',age=18)   # 渲染
方式三(推荐使用方式):FileSystemLoader

FileSystemLoader(searchpath, encoding=‘utf-8’, cache_size=50, auto_reload=True)

searchpath是查找路径,它可以是一个路径字符串,也可以是多个路径的列表

from jinja2 import FileSystemLoader,Environment

env = Environment(loader=FileSystemLoader('/python_project/templates'))    # 创建一个包加载器对象
 
template = env.get_template('bast.html')    # 获取一个模板文件
template.render(name='daxin',age=18)   # 渲染

模板语法

语法结构注释
{% %}控制结构,一般用来存放表达式
{{ }}变量取值,存放变量
{# #}存放注释
常用控制结构
  1. 判断语句
{% if daxin.safe %}
daxin is safe.
{% elif daxin.dead %}
daxin is dead
{% else %}
daxin is okay
{% endif %}
  1. for循环
    1. 迭代列表
    <ul>
    {% for user in users %}
    <li>{{ user.username|title }}</li>
    {% endfor %}
    </ul>
    
    1. 迭代字典
    <dl>
    {% for key, value in my_dict.iteritems() %}
    <dt>{{ key }}</dt>
    <dd>{{ value}}</dd>
    {% endfor %}
    </dl>
    

for循环中,jinja2提供了一些特殊的变量,用来获取当前的遍历状态

变量描述
loop.index当前迭代的索引(从1开始)
loop.index0当前迭代的索引(从0开始)
loop.first是否是第一次迭代,返回bool
loop.last是否是最后一次迭代,返回bool
loop.length序列中的项目数量
loop.revindex到循环结束的次数(从1开始)
loop.revindex0到循环结束的次数(从0开始)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值