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

如何通过Jinja2标签在docxtpl中嵌入子docx模板?报错求解决方案

解决docxtpl中使用{% include %}嵌入子docx模板的报错问题

这个报错的核心原因很明确:你的Jinja2环境没有配置模板加载器,docxtpl默认不会自动设置加载规则,所以它找不到你要引入的child.docx文件。下面是具体的解决步骤和代码示例:

步骤1:导入必要的模块

除了docxtpl的DocxTemplate,你还需要从jinja2导入FileSystemLoader——这个加载器会告诉Jinja2去哪里查找模板文件。

from docxtpl import DocxTemplate
from jinja2 import FileSystemLoader

步骤2:配置模板加载器

先确定你的主模板和子模板所在的目录(比如都在当前工作目录下),创建FileSystemLoader实例指向这个目录:

# 假设模板都在当前目录,用'.'表示;如果在子目录比如'templates',就写'templates'
loader = FileSystemLoader('.')

步骤3:用加载器初始化DocxTemplate

初始化主模板的时候,把loader参数传进去,这样docxtpl的Jinja2环境就知道去哪里找子模板了:

tpl = DocxTemplate('main.docx', loader=loader)

步骤4:正常渲染模板

现在你就可以在main.docx里放心使用{% include "child.docx" %}标签,然后正常渲染数据:

context = {
    # 这里填写你的模板变量,比如 'title': '测试文档'
}
tpl.render(context)
tpl.save('output.docx')

额外注意事项

  • 如果子模板在其他目录,比如./templates/child/,你可以调整FileSystemLoader的路径为'./templates/child',或者在{% include %}里写相对路径(比如{% include "child/child.docx" %},前提是loader指向的是父目录)。
  • 确保子模板的文件名和路径拼写正确,大小写敏感(尤其是在Linux/macOS环境下)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 09:22:53