我在golang中有一个包含不同模板的文件夹。主模板是 main.html ,还有 footer.html 和 header.html 。页脚和页眉加载
{{template "footer.html" .}}
main.html 中的。
我用它来解析文件
templates, _ := template.ParseGlob("Templates/" + template_name + "/*.html")
因为还有其他目录使用了不同的文件名。所以我不想使用 parseFiles 。
但是,显示的模板始终是按字母顺序排列的第一个模板,例如 footer.html 。如果我将 main.html 重命名为 a.html ,模板会以我想要的方式显示(因此加载主模板并在其中执行页脚和标题)。
我找不到任何文档如何告诉golang首先使用哪个模板。有没有办法做到这一点?
答案 0 :(得分:0)
知道template.Template
可能(通常是)多个模板的集合。该模板包含相关模板的映射。使用template.ParseFiles()
或template.ParseGlob()
时,返回的template.Template
将指定已解析的第一个模板(来自多个文件)。您可以在此处详细了解:Go template name
使用Template.Execute()
方法,而不是使用Template.ExecuteTemplate()
(基于上面的 - 将执行第一个已解析的模板),您可以在其中指定要执行的模板,由其名称指定:
err := templates.ExecuteTemplate(w, "main.html", data)
这将执行名为"main.html"
的模板,无论模板文件的解析顺序如何(或稍后添加到模板集合中)。