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

Jinja2渲染HTML模板时document_number变量输出为空如何修复

问题原因

变量渲染为空是传参方式错误导致的:
你调用template.render(json_data=data_to_render)时,是把整个数据字典作为json_data这一个变量传入模板,模板顶层作用域里并没有直接名为document_number的变量,Jinja2默认对不存在的变量会静默返回空字符串,不会抛出异常,所以最终输出是空的。
你自定义的注释分隔符配置不影响本次变量渲染,但如果没有特殊的注释格式需求,建议保留默认配置即可,避免后续写Jinja2默认注释{# 注释内容 #}时出现解析问题。

修复方法

把render方法的传参改成字典解包形式,让数据字典的键直接作为模板可访问的顶层变量即可,适配你当前模板的写法,修复后的代码:

import jinja2

templateLoader = jinja2.FileSystemLoader(searchpath="./")
data_to_render = {
    "document_number": "123",
    "building_object_address": "Moscow"
}
templateEnv = jinja2.Environment(
    loader=templateLoader,
    # 无特殊需求可以删掉下面两行自定义注释分隔符的配置
    comment_start_string='{=',
    comment_end_string='=}',
    # 可选:加下面这行配置,后续变量不存在时会直接抛错,方便排查问题
    # undefined=jinja2.StrictUndefined
)
template = templateEnv.get_template("income_contract_short.html")
# 用**解包字典传入参数
sourceHtml = template.render(**data_to_render)

如果你不想改传参逻辑,也可以保留原有template.render(json_data=data_to_render)的写法,把模板里的变量占位符改成{{json_data.document_number}},两种方式效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:57:07