2017-03-05 117 views
1

我在golang中有一个具有不同模板的文件夹。主要模板是main.html并且还有一个footer.htmlheader.html。页脚和页眉在main.html中装载告诉Golang先执行哪个模板

{{template "footer.html" .}} 

我用这来解析文件

templates, _ := template.ParseGlob("Templates/" + template_name + "/*.html") 

因为有其他的目录与藏汉使用不同的文件名。所以我不想用parseFiles

然而,显示的模板总是按字母顺序排列的第一个,例如, footer.html。如果我将main.html重命名为a.html,模板将按照我希望的方式显示(如此加载主模板并在其中执行页脚和页眉)。

我找不到任何文件如何告诉golang首先使用哪个模板。有没有办法做到这一点?

回答

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"以什么顺序模板文件进行解析(或更高版本添加到模板集合)无论模板。