template.ParseGlob()可以解析子目录中的模板吗?
要清理模板文件夹,我想将常用模板保存在子文件夹中。目前,我具有以下文件结构:
main.gotemplates/index.tpl # Main template for the main page
templates/includes/head.tpl
templates/includes/footer.tpl
head.tpl
并将footer.tpl
在内调用index.tpl
,如下所示:
{{ template "head" . }} <h1>My content</h1>
{{ template "footer" .}}
此外,使用解析文件template.ParseGlob()
。以下是摘录main.go
:
var views = template.Must(template.ParseGlob("src/templates/**/*"))func Render(rw http.ResponseWriter, temp string, data interface{}) {
err := views.ExecuteTemplate(rw, temp, data)
if err != nil {
http.Error(rw, err.Error(), http.StatusInternalServerError)
}
}
func Index(rw http.ResponseWriter, req *http.Request) {
Render(rw, "index.tpl", nil)
}
每次打开浏览器时,都会显示以下错误消息:html/template: "index.tpl" is undefined
。
是否有可能index.tpl
被这种glob模式所忽略?我发现了类似的问题,但答案仅能解决。
回答:
不,它不能。
这里的文档非常清楚:template.ParseGlob
像in中那样进行globbing
,filepath.Glob
并filepath.Glob
使用filepath.Match
(https://godoc.org/path/filepath#Match)的语法,该语法没有**
深度匹配。
(认真阅读文档 确实有 帮助。)
以上是 template.ParseGlob()可以解析子目录中的模板吗? 的全部内容, 来源链接: utcz.com/qa/411016.html