模板转换
只支持Jinja,一种python模板语言
某个节点的输出内容如下
可以看到,在text中没有内容,也就是说,我们传统的在直接回复中填入text输出相关内容的方式没用。
而且,你无法在直接回复中输出上个节点的json内容,此时我们想要输出json中的events该如何做?
此时需要利用一个节点:模板转换,该节点仅支持Jinja模板语言 Jinja 原本是 Python 的模板引擎,最初是为 Flask 框架开发的,功能非常强大,可以动态生成网页,XML,CSV 或者 Markdown 文本。 所以,在实际项目中,利用模板转换的功能,将中间数据,通过模板渲染成需要的格式,才能体现它真正的威力,千万不要被本文例子中的简单写法迷惑,觉得它过于简单哦。 下面是一个输出event中的content内容的示例
1. {% for event in arg1[0]["events"] %}
2. 事件ID:{{ event.id }},
3. 内容:
4. {% for item in event.event_data.profile_delta %}
5. {{ item.content }}
6. {% endfor %}
7.
8. {% endfor %}
1. {% ... %}:控制结构
{% ... %} 用于定义 Jinja2 的控制结构,例如循环、条件判断、变量赋值等。在你的代码中,{% for ... %} 和 {% endfor %} 是一对循环标签,表示一个 for 循环的开始和结束。
**第一行:{% for event in arg1[0]["events"] %}
作用:遍历 arg1[0]["events"] 中的每个元素,并将其赋值给变量 event。解释:
arg1 是一个输入变量,假设它是一个 JSON 数组,其中第一个元素是一个对象,包含一个名为 "events" 的键。arg1[0]["events"] 表示获取 arg1 中第一个对象的 "events" 键对应的值,假设这是一个数组。for event in arg1[0]["events"] 表示对这个数组中的每个元素进行遍历,每次迭代时,当前元素被赋值给变量 event。
**第八行:{% endfor %}
作用:表示 for 循环的结束。解释:与开头的 {% for ... %} 配对,标志着循环体的结束。
2. {{ ... }}:表达式
{{ ... }} 用于在模板中插入动态内容,即渲染变量或表达式的值。在你的代码中,{{ ... }} 用于输出变量的值。
**第二行:事件ID:{{ event.id }}
作用:输出当前 event 对象的 id 属性。解释:
event 是在 for 循环中定义的变量,表示当前正在遍历的 arg1[0]["events"] 数组中的一个元素。event.id 表示访问 event 对象的 id 属性,并将其值插入到模板中。
**第五行:{{ item.content }}
作用:输出当前 item 对象的 content 属性。解释:
item 是在内层 for 循环中定义的变量,表示当前正在遍历的 event.event_data.profile_delta 数组中的一个元素。item.content 表示访问 item 对象的 content 属性,并将其值插入到模板中。
3. 嵌套循环
你的代码中存在两层 for 循环:
外层循环:{% for event in arg1[0]["events"] %},遍历 arg1[0]["events"] 数组。内层循环:{% for item in event.event_data.profile_delta %},遍历当前 event 对象的 event_data.profile_delta 数组。
**第四行:{% for item in event.event_data.profile_delta %}
作用:遍历当前 event 对象的 event_data.profile_delta 数组,并将其每个元素赋值给变量 item。解释:
event.event_data.profile_delta 表示当前 event 对象中的一个数组,假设它存储了一些与事件相关的数据。for item in event.event_data.profile_delta 表示对这个数组中的每个元素进行遍历,每次迭代时,当前元素被赋值给变量 item。
**第六行:{% endfor %}
作用:表示内层 for 循环的结束。解释:与内层循环的开头 {% for ... %} 配对,标志着内层循环体的结束。
4.普通文本
模板中的普通文本(非 {% ... %} 或 {{ ... }} 的部分)会被直接输出到最终结果中。例如:
第三行:内容: 是普通的文本,会原样输出。第七行:
是 HTML 标签,用于换行,也会原样输出。
完整逻辑分析
外层循环:
遍历 arg1[0]["events"] 数组中的每个事件。每次迭代时,当前事件被赋值给变量 event。
输出事件 ID:
使用 {{ event.id }} 输出当前事件的 id 属性。
内层循环:
遍历当前事件的 event_data.profile_delta 数组中的每个项。每次迭代时,当前项被赋值给变量 item。
输出内容:
使用 {{ item.content }} 输出当前项的 content 属性。
换行:
使用
标签在每次外层循环结束后换行,以便清晰地分隔不同事件的内容。