mustache模板技术
一、模板技术
模板技术顾名思义,平时写文章或者搞事情的时候,都想知道有没有套路,而这个套路可以理解为模板,只需要按照这个模板,就可以把事情做得规范漂亮。这里的模板技术也差不多,其实就是用变量,去替换模板中标记的部分,然后达到快速编写文章、邮件等目的。
二、安装及标签
1、安装方式
pip install chevron
2、标签语法
{{keyName}}
标示符,花括号里的 keyName
表示键名,这句的作用是直接输出与键名匹配的键值,有点像变量的引用
{{#keyName}} {{/keyName}}
以#
开始、以/
结束表示区块,它会根据当前上下文中的键值来对区块进行一次或多次渲染,一般需要循环调用数据时使用
注:如果{{#keyName}}
{{/keyName}}
中的 keyName
值为 null
, undefined
, false
;则不渲染输出任何内容
{{^keyName}} {{/keyName}}
该语法与{{#keyName}}
{{/keyName}}
类似,不同在于它是当 keyName
值为 null
, undefined
, false
时才渲染输出该区块内容
{{.}}
{{.}}
表示枚举,可以循环输出整个数组,一般配合{{#keyName}} {{/keyName}}
使用
{{{keyName}}}
{{keyName}}
输出时会将特殊字符转译,如果想保持内容原样输出可以使用{{{}}}
{{!comments}}
!
表示注释,注释后不会渲染输出任何内容。
二、Python字符串替换
import chevron
template = 'Hello, {{ mustache }}!' # 模板
data = {'mustache': 'World'} # 数据
response = chevron.render(template, data)
print(response)
输出:
Hello, World!
注意:当模板中存在不需要替换的字段时,模板会以空字符串代替,比如模板中存在{{name}},而data数据中不需要对其进行替换,那么自动会以空替换。
import chevron
template = 'Hello, {{name}} {{ mustache }}!' # 模板
data = {
'mustache': 'World',
} # 数据
response = chevron.render(template, data)
print(response)
输出:
Hello, World!
三、Python字典替换
import json
import chevron
template = {
"name": "{{name}}",
"age": "{{age}}",
"sex": "{{sex}}",
"address": "{{address}}四川省成都市",
"phone": "{{phone}}18911111111",
"title": "{{title}}"
}
data = {
"name": "鸣人",
"age": 22,
"sex": "男",
"title": "六代火影"
}
render = chevron.render(json.dumps(template,ensure_ascii=False), data) # 用数据(data)替换模板(template)中的mustache
print(f"替换后:{render}")
输出:
替换后:{"name": "鸣人", "age": "22", "sex": "男", "address": "四川省成都市", "phone": "18911111111", "title": "六代火影"}
注意:当在模板的标签{{}}外再填入默认的数据时,这些数据会成为默认数据。
四、字典解包替换
import chevron
args = {
'template': 'Hello, {{> thing }}!',
'partials_dict': {
'thing': 'World'
}
}
print(chevron.render(**args))
输出:
Hello, World!
五、文件模板替换
这是文件模板template.json
{
"name": "{{name}}",
"age": "{{age}}",
"sex": "{{sex}}",
"address": "{{address}}",
"phone": "{{phone}}",
"title": "{{title}}"
}
这是脚本文件test_chevron.py
import json
import os
import chevron
file_path = os.path.join(os.path.dirname(__file__), "template.json")
data = {
"name": "鸣人",
"age": 22,
"sex": "男",
"title": "六代火影"
} # 数据
with open(file_path, 'r', encoding="utf-8") as fp: template = json.load(fp)
render = chevron.render(json.dumps(template, ensure_ascii=False), data) # 用数据(data)替换模板(template)中的mustache
print(f"替换后:{render}")
输出:
替换后:{"name": "鸣人", "age": "22", "sex": "男", "address": "成都", "phone": "13345678900", "title": "六代火影"}
更多方式请参考官方文档,如参考所示。