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

Python中Jinja2渲染报错求助:UndefinedError: 'prefixes'未定义

Jinja2渲染报错:'prefixes' is undefined 解决方案

错误原因

你调用j2.render(prefixes)时,直接将字典prefixes作为参数传入,但Jinja2的render()方法会把传入字典的键作为模板中的变量名,而非将整个字典赋值给名为prefixes的变量。模板中你试图访问prefixes变量,但这个变量并未被正确传入模板上下文,因此触发UndefinedError。

修复方法

需要将prefixes以关键字参数的形式传入render()方法,让模板能识别到名为prefixes的变量:

修改后的代码

from jinja2 import Template

prefixes  = {
    "10.0.0.0/24" : {
        "description": "Corporate NAS",
        "region": "Europe",
        "site": "Telehouse-West"
    }
}

template = """
Details for 10.0.0.0/24 prefix:
 Description: {{ prefixes['10.0.0.0/24'].description }}
 Region: {{ prefixes['10.0.0.0/24'].region }}
 Site: {{ prefixes['10.0.0.0/24'].site }}
"""

j2 = Template(template)
# 使用关键字参数传入prefixes
print(j2.render(prefixes=prefixes))

另一种写法(打包上下文字典)

如果需要传入多个变量,可以把所有变量放到一个上下文字典中统一传入:

context = {
    "prefixes": prefixes,
    # 可添加其他需要传入模板的变量
}
print(j2.render(context))

验证结果

修复后运行代码,会输出预期内容:

Details for 10.0.0.0/24 prefix:
 Description: Corporate NAS
 Region: Europe
 Site: Telehouse-West

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:55:20