告诉Golang首先执行哪个模板

时间:2017-03-05 06:46:36

标签: templates go go-templates

我在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首先使用哪个模板。有没有办法做到这一点?

1 个答案:

答案 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"的模板,无论模板文件的解析顺序如何(或稍后添加到模板集合中)。