模板转换

只支持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. <br>
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 循环:
    1. 外层循环:{% for event in arg1[0]["events"] %},遍历 arg1[0]["events"] 数组。
    2. 内层循环:{% 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.普通文本
  • 模板中的普通文本(非 {% ... %}{{ ... }} 的部分)会被直接输出到最终结果中。
  • 例如:
    • 第三行:内容: 是普通的文本,会原样输出。
    • 第七行:<br> 是 HTML 标签,用于换行,也会原样输出。

完整逻辑分析
  1. 外层循环
    • 遍历 arg1[0]["events"] 数组中的每个事件。
    • 每次迭代时,当前事件被赋值给变量 event
  1. 输出事件 ID
    • 使用 {{ event.id }} 输出当前事件的 id 属性。
  1. 内层循环
    • 遍历当前事件的 event_data.profile_delta 数组中的每个项。
    • 每次迭代时,当前项被赋值给变量 item
  1. 输出内容
    • 使用 {{ item.content }} 输出当前项的 content 属性。
  1. 换行
    • 使用 <br> 标签在每次外层循环结束后换行,以便清晰地分隔不同事件的内容。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐