说明:通过jinja2渲染后只能打印出来效果,目前无法保存

例1:渲染 .j2 文件

1、安装jinja2模块

pip3 install jinja2

2、定义模板

说明:变量必须是小写,大写有的情况无法替换,亲测;模板必须是j2结尾或者jinja2默认支持的html格式

本实例的文档是不全的,只是截取了其中一段作为例子进行演示

本实例模板中定义了两个需要被渲染的变量

{{ cluster_cidr }}   { iface }}

cat >kube-flannel.yml.template.j2 <<EOF
kind: ConfigMap
apiVersion: v1
metadata:
name: kube-flannel-cfg
namespace: kube-system
labels:
tier: node
app: flannel
data:
net-conf.json: |
{
"Network": "{{ cluster_cidr }}",
"Backend": {
"Type": "vxlan"
}
}
---
apiVersion: extensions/v1beta1
kind: DaemonSet
spec:
template:
metadata:
labels:
tier: node
app: flannel - /opt/bin/flanneld
args:
- --ip-masq
- --kube-subnet-mgr
- --iface={{ iface }}
resources:
EOF 3、定义脚本 cat >kube-flannel.yml.py<<EOF
#!/usr/bin/python
# -*- codinig: UTF-8 -*- import os
import jinja2 #定义模板函数,这个必须有,没有模板函数是无法实现替换的 def render(tpl_path,**kwargs):
path,filename=os.path.split(tpl_path)
return jinja2.Environment(
loader=jinja2.FileSystemLoader(path or './')
).get_template(filename).render(**kwargs) def test_simple():
iface="ens33"
cluster_cidr="172.30.0.0/16"
result=render('/rubbish/kube-flannel.yml.template.j2',**locals())
print(result)
if __name__ == '__main__':
test_simple()
EOF 4、执行脚本 [root@test1 rubbish]# python kube-flannel.yml.py
kind: ConfigMap
apiVersion: v1
metadata:
name: kube-flannel-cfg
namespace: kube-system
labels:
tier: node
app: flannel
data:
net-conf.json: |
{
"Network": "172.30.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
---
apiVersion: extensions/v1beta1
kind: DaemonSet
spec:
template:
metadata:
labels:
tier: node
app: flannel - /opt/bin/flanneld
args:
- --ip-masq
- --kube-subnet-mgr
- --iface=ens33
resources: 可以看到模板文件里面的变量都被替换掉了,替换效果如下: "Network": "172.30.0.0/16", - --iface=ens33 实例2:渲染.txt文件 1、安装jinja2模块 pip3 install jinja2 2、定义模板 说明:变量必须是小写,大写有的情况无法替换,亲测;模板必须是j2结尾或者jinja2默认支持的html格式 本实例的文档是不全的,只是截取了其中一段作为例子进行演示 本实例模板中定义了一个需要被渲染的变量 { iface }} cat >a.txt <<EOF
hello "{{ iface }}"
EOF 3、定义脚本 cat >kube-flannel.yml.py<<EOF
#!/usr/bin/python
# -*- codinig: UTF-8 -*- import os
import jinja2 #定义模板函数,这个必须有,没有模板函数是无法实现替换的 def render(tpl_path,**kwargs):
path,filename=os.path.split(tpl_path)
return jinja2.Environment(
loader=jinja2.FileSystemLoader(path or './')
).get_template(filename).render(**kwargs) def test_simple():
iface="ens33"
cluster_cidr="172.30.0.0/16"
result=render('/rubbish/a.txt',**locals())
print(result)
if __name__ == '__main__':
test_simple()
EOF 4、执行脚本 [root@test1 rubbish]# python kube-flannel.yml.py
hello "ens33" 可以看到模板文件里面的变量都被替换掉了

jinja2渲染使用的更多相关文章

  1. [Flask]jinja2渲染分页导航部件

    注意: 1.在视图函数中通过request.args.get('page')获取page数,并将page传给macros.html模板文件 效果: 点击8,就跳转到第8页数据了 视图函数 @app.r ...

  2. web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例

    Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...

  3. 模板渲染JinJa2

    模板渲染JinJa2 ​ 可以从数据库中查询数据,然后去替换我html中的对应内容(专业名词叫做模板渲染,你先渲染一下,再给浏览器进行渲染),然后再发送给浏览器完成渲染. 这个过程就相当于HTML模板 ...

  4. Flask06 地址约定、利用falsk提供的方法渲染模板

    1 访问地址约定 在访问路径的末尾是否需要加 / -> 可以加,也可以不加 前端的访问路径必须和后端的路径完全匹配才能够访问成功,如果我们在后台的路径都是以 / 结尾,但是我们的访问路径是没有以 ...

  5. Django框架简介,wsgiref 与 jinja2 模块

    目录 框架简介 wsgiref模块 jinja2 模块 框架简介 Django是一个web开发框架,用来开发web应用,本质就是, web框架+socket服务端 MVC框架和MTV框架 MVC,全名 ...

  6. 5.Ansible Jinja2 模板

    1.jinja2渲染NginxProxy配置文件 jinja2 房屋建筑设计固定的 jinja2模板与Ansible关系 Ansible如何使用jinja2模板 template模块 拷贝文件? te ...

  7. Ansible Jinja2 模板

    1.jinja2渲染NginxProxy配置文件 jinja2 房屋建筑设计固定的? jinja2模板与Ansible关系 Ansible如何使用jinja2模板 template模块 拷贝文件? t ...

  8. Ansible --05 ansible jinja2

    ansible jinja2 什么是jinjia2模板 jinjia2是Python的全功能模块引擎 Jinjia2与Ansible的关系 Ansible通常会使用jinjia2模板来修改被管理主机的 ...

  9. 模板渲染jnja2模块

    模板渲染jnja2模块 模板的引入: 在返回动态页面时,上述我们在08版web框架返回每次访问的时间,利用自己写的占位符进行字符串替换进行动态响应: 在实际应用中,完全可以从数据库中读取数据,然后替换 ...

随机推荐

  1. Easy Populate批量管理下载产品数据为空的解决办法

    把原来的先删除:http://aaaaacom/admin/easypopulate.php?langer=remove

  2. BZOJ 1006 完美消除序列&最大势算法&弦图

    K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系等等的存在.所谓N边关系 ...

  3. python的序列化模块

    最近机器学习的模型需要序列化和反序列化,因为写个博客总结一下几个模型和数据等序列化的模块.

  4. 归类常用控件GroupBox、TabControl、Expander

    <StackPanel Orientation="Horizontal"> <GroupBox Header="颜色" Margin=&quo ...

  5. List集合、泛型、装箱拆箱

    1.List集合 Vector:增删改查都慢 线程同步 线程安全 LlinkedList:以链表结构存储数据,查询慢.增删快 ArrayList:的运行速度比较快 连续数据空间存储数据,查询快(下标) ...

  6. Codevs 1519 过路费(Mst+Lca)

    1519 过路费 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 大师 Master 题目描述 Description 在某个遥远的国家里,有 n个城市.编号为 1,2,3,-,n. ...

  7. 棋盘问题 ( POJ -1321 )(简单DFS)

    转载请注明出处:https://blog.csdn.net/Mercury_Lc/article/details/82684942作者:Mercury_Lc 题目链接 题解:dfs入门,就是每个点都搜 ...

  8. apt-get build-dep命令详解

    apt-get build-dep命令详解 - 星星之火的Blog - CSDN博客  https://blog.csdn.net/starflame/article/details/7416311 ...

  9. 使用Python操作Excel文档(一)

    Python | 使用Python操作Excel文档(一) 0 前言 在阅读本文之前,请确保您已满足或可能满足以下条件: 请确保您具备基本的Python编程能力. 请确保您会使用Excel. 请确保您 ...

  10. 【译】OkHttp3 拦截器(Interceptor)

    一,OkHttp 拦截器介绍(译自官方文档) 官方文档:https://github.com/square/okhttp/wiki/Interceptors 拦截器是 OkHttp 提供的对 Http ...