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

Python3中无法向Jinja2模板传递testcases值的问题求助

无法从Jinja2模板中获取testcases值的问题解决

问题情况

我尝试用Jinja2渲染包含测试用例列表的模板,但模板中的循环区域始终为空,无法渲染出testcases里的name字段值。

Python代码

from jinja2 import Environment, FileSystemLoader


testcases = [
    {'name' : 'testcase1', 'value' : 'PASS'},
    {'name': 'testcase2', 'value': 'FAIL'},
    {'name': 'testcase3', 'value': 'FAIL'},
]

env = Environment(loader=FileSystemLoader("."))
template = env.get_template('./index.html')

content = template.render(testcases)
print(content)

Jinja HTML模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">

</head>
<body>
    <p1>Hello</p1>

    <div>
        <ul>
            {% for i in testcases %}
                <li>{{ i['name'] }}</li>
            {% endfor %}
        </ul>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script>
</body>
</html>

实际输出

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">

</head>
<body>
    <p1>Hello</p1>

    <div>
        <ul>
            
        </ul>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script>
</body>
</html>

解决方法

问题出在template.render(testcases)这一行。Jinja2的render()方法需要关键字参数来绑定模板中使用的变量名,直接传入列表无法让模板识别到testcases这个变量。

修改这一行代码为以下两种方式之一即可:

方式1:使用关键字参数

content = template.render(testcases=testcases)

方式2:传入字典

content = template.render({'testcases': testcases})

修改后,模板就能正确识别testcases变量,循环会遍历列表并渲染每个测试用例的name字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 03:05:29