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>
posted @ 2021-08-06 16:40  破影  阅读(459)  评论(0)    收藏  举报