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": "六代火影"}

更多方式请参考官方文档,如参考所示。

六、参考

https://github.com/noahmorrison/chevron

https://www.cnblogs.com/JoannaQ/p/3462318.html

posted @ 2020-10-22 22:21  xyztank  阅读(345)  评论(0编辑  收藏  举报