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

Python中Jinja模板引用文件未填充内容问题排查

解决Jinja2 include模板内容不渲染的问题

问题分析

你遇到的情况是Jinja2能识别被引用的文件(输入错误文件名会触发报错),但无法将文件内容填充到主模板中,这是因为Jinja2默认的自动转义机制针对HTML场景设计,在处理SQL这类纯文本模板时会影响内容输出,尤其在3.1.4版本中需要针对性调整配置。

解决方案

方案1:关闭全局自动转义

修改Environment初始化代码,添加autoescape=False参数,适配SQL这类无需HTML转义的纯文本模板:

from jinja2 import Environment, FileSystemLoader

# 关闭自动转义,确保纯文本内容直接输出
env = Environment(loader=FileSystemLoader('templates'), autoescape=False)
template = env.get_template('queries/sample_query.sql')
# 打印渲染结果查看完整内容
print(template.render())

方案2:捕获内容并标记为安全

若不想修改全局配置,可在sample_query.sql模板中用capture标签捕获引用内容,再通过safe过滤器强制输出原始文本:

{% capture values %}
{% include 'common/sample_values.sql' %}
{% endcapture %}
SELECT *
FROM tablename
WHERE col IN {{ values | safe }}

验证效果

修改后重新运行代码,输出会变为:

SELECT *
FROM tablename
WHERE col IN ('value1', 'value2', 'value3')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 06:51:03