You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用pymsteams与Jinja2在Teams发送含循环数据的单条模板消息

问题描述

我使用pymsteams和Jinja2模板向Microsoft Teams发送消息,现有代码如下:

def method_create_template(data):
    for t in data:
        name=t['name']
        age=t['age']
        with open("directory/file.html",'r') as files:
            files = Template(files.read())
            files=files.render(data1=name,data2=age)
            myTeamsMessage = pymsteams.connectorcard(url)
            myTeamsMessage.title("title")
            myTeamsMessage.text(files)
            myTeamsMessage.color("FF0000")
            response = myTeamsMessage.send()
            print("message sent")

目前消息可正常发送,但需求是发送一条包含所有循环数据的消息,而非循环逐条发送。我的循环数据为[{"name":"putta","age":"25"},{"name":"xyz","age":"80"}],当前使用的模板如下:

<table ><tr><th>name</th><th>age</th></tr><td>{{data1}}</td><td><a href="{{data2}}"></a>{{data2}}</td></table>

当前要么生成多个独立表格,要么移出循环后仅显示单条数据,期望输出是包含所有数据的统一表格:

name     age
putta     25
xyz       80
abc       90

请问如何修改代码实现该需求?

解决方案

1. 调整Python代码逻辑

将循环发送消息的逻辑移除,改为一次性将完整数据列表传给模板,仅发送一次Teams消息:

def method_create_template(data):
    # 读取模板文件并初始化Jinja2模板
    with open("directory/file.html", 'r') as file:
        template = Template(file.read())
        # 将整个数据列表传入模板渲染
        rendered_content = template.render(people=data)
    
    # 创建并发送单条Teams消息
    myTeamsMessage = pymsteams.connectorcard(url)
    myTeamsMessage.title("统一数据汇总")
    myTeamsMessage.text(rendered_content)
    myTeamsMessage.color("FF0000")
    response = myTeamsMessage.send()
    print("消息已发送")

2. 修改Jinja2模板

利用Jinja2的循环语法,在模板内遍历所有数据生成完整表格:

<table>
    <tr>
        <th>name</th>
        <th>age</th>
    </tr>
    {% for person in people %}
    <tr>
        <td>{{ person.name }}</td>
        <td>{{ person.age }}</td>
    </tr>
    {% endfor %}
</table>

补充说明

  • 代码层面:不再循环创建和发送消息,而是一次性传递全部数据,让模板处理多行内容的生成。
  • 模板层面:通过{% for %}遍历传入的people列表,为每个数据项生成一行表格内容,最终得到包含所有数据的单个表格。
  • 若需保留age字段的链接,可将模板中的<td>{{ person.age }}</td>修改为<td><a href="{{ person.age }}">{{ person.age }}</a></td>(需确保age字段适合作为URL使用)。

内容的提问来源于stack exchange,提问作者putta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 21:20:26