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

如何仅修改Jinja2模板渲染带连字符的全局变量b-c?

Jinja2含连字符全局变量的模板渲染解决方案

问题说明

以下代码使用Jinja2渲染模板时,因全局变量键包含连字符b-c,当前模板写法会触发UndefinedError,提示'b' is undefined。要求仅修改template变量,实现渲染出hello 456的预期结果,且不能修改数据定义及模板渲染逻辑。

import jinja2

environment = jinja2.Environment()

data = {'a':123, 'b-c':456}
template = "hello {{ b-c }}"

result = environment.from_string(template, globals = data).render()

print('result:', result)

当前报错

jinja2.exceptions.UndefinedError: 'b' is undefined

预期输出

hello 456

解决方法

将模板内容修改为:

template = "hello {{ globals['b-c'] }}"

原理说明

Jinja2模板语法中,b-c会被解析为变量b与变量c的减法运算,而非直接访问键为b-c的全局变量,这是报错的核心原因。通过globals['b-c']的方式,可直接从全局变量字典中按键索引取值,避开语法解析歧义。

修改后运行代码,将输出符合预期的result: hello 456。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 04:51:02