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
相关产品推荐
相关产品推荐

