gpt4 book ai didi

templates - 多个文件的划分模板不提供数据

转载 作者:数据小太阳 更新时间:2023-10-29 03:22:05 24 4
gpt4 key购买 nike

我的模板有 1 个文件(原始文件)按预期工作,现在当它变大时我开始将它分成 3 个文件 并且只是将原始文件中的数据复制并粘贴到 3 个文件中,我能够看到模板已成功执行,但 startend 模板中缺少数据,只有 main 模板从 structData

正确接收数据

例如

startTemple.txt

{{define "start"}}
...

{{end}}


main.txt (here i include both template)

{{template "start"}}
...

{{template "end"}}


endTemplate.txt


{{define "end"}}
...
{{end}}

我使用以下

t, err := template.New(mainTemplateName).Funcs(funcMap).ParseFiles(startPath, mainPath, endPath)

err = t.Execute(templFile, structData)
if err != nil {
logs.Logger.Error(err)
}

我使用的代码和以前一样,问题是 structData 中的数据生成后没有出现在 startend 模板中,就在 main 中正确获取 structData,我在这里可能会遗漏什么?

使用硬编码数据成功生成了模板(start main end),但是应该来自structData的数据却不是在生成期间添加到 startend 模板

我是否应该以某种方式将 structData 也添加到 startend 中?

最佳答案

当您使用 template 调用另一个模板时,dot 默认不设置,但您可以将该值作为(可选)第二个参数传递给 像这样的模板:

{{template "name"  pipeline}}

在您的情况下,您的main.txt 模板应该是

{{template "start" .}}
...
{{template "end" .}}

dot 的值向下传递到 startend 模板。

因为dot的值可以这样设置,所以也可以用更复杂的方式将模板拆分成多个文件。例如,你可以有一个 HTML 模板以卡片式的方式显示用户信息,无论你想在输出中的什么地方插入这张卡片,你都可以调用模板并将它传递给用户,即使周围的模板还需要其他信息或在循环中。

有关更多详细信息,请查看 text/template文档。这适用于 text/templatehtml/template,但仅针对 text/template 明确记录,而在html/template 文档的开头,告诉您在哪里可以找到详细的文档。

关于templates - 多个文件的划分模板不提供数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52132061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com