Jinja2模板用法-初识
概述
Jinja 模板只是一个文本文件,可以 基于模板生成任何基于文本的格式(HTML、XML、CSV、LaTeX 等),一般用在前端的项目中,渲染 HTML 文件。
作为网络工程师,可以将其用来批量生成网络设备的配置。或者其他需要批量生成文本的场景中。
模板包含变量或表达式,这两者在模板求值的时候会被替换为值。模板中还有标签,控制模板的逻辑。模板语法的大量灵感来自于 Django 和 Python 。
语法
变量取值
{{ var }}
字符串:{{ url_str }}<br>
整型:{{ my_int }}<br>
列表:{{ my_list }}<br>
列表取值1:{{ my_list[2] }}<br>
列表取值2:{{ my_list.2 }}<br>
字典取值:<br>
{{ my_dict }}<br>
{{ my_dict['name'] }}<br>
{{ my_dict.name }}<br>
{{ my_dict['domain'] }}<br>
{{ my_dict.domain }}<br>
控制结构
{% for i in list %}
{{ i }}
{% endfor %}
{% if sum > 3 %}
{{ sum }}
{% endif %}
注释
{# 这是一个注释 #}
过滤器
变量可以通过“过滤器”进行修改,过滤器可以理解为是jinja2里面的内置函数和字符串处理函数。
常用的过滤器有:
- safe: 渲染时值不转义
- capitialize: 把值的首字母转换成大写,其他子母转换为小写
- lower: 把值转换成小写形式
- upper: 把值转换成大写形式
- title: 把值中每个单词的首字母都转换成大写
- trim: 把值的首尾空格去掉
- striptags: 渲染之前把值中所有的HTML标签都删掉
- join: 拼接多个值为字符串
- replace: 替换字符串的值
- round: 默认对数字进行四舍五入,也可以用参数进行控制
- int: 把值转换成整型
过滤器的使用
在变量后面使用管道(|)分割,多个过滤器可以链式调用,前一个过滤器的输出会作为后一个过滤器的输入。
{{ 'abc' | captialize }}
# Abc
{{ 'abc' | upper }}
# ABC
{{ 'hello world' | title }}
# Hello World
{{ "hello world" | replace('world','daxin') | upper }}
# HELLO DAXIN
{{ 18.18 | round | int }}
# 18
for循环
jinja2中的for循环用于迭代Python的数据类型,包括列表,元组和字典。在jinja2中不存在while循环。
1.迭代列表
<ul>
{% for user in users %}
<li>{{ user.username|title }}</li>
{% endfor %}
</ul>
2.迭代字典
<tr>
{% for key, value in my_dict.iteritems() %}
<th>{{ key }}</th>
<td>{{ value}}</td>
{% endfor %}
</tr>

浙公网安备 33010602011771号