我在 Go 中使用 echo 框架来创建一个 Web 应用程序。我有一个名为的目录,templates
里面有两个目录layouts
和users
. 目录树如下:
layouts
|--------default.tmpl
|--------footer.tmpl
|--------header.tmpl
|--------sidebar.tmpl
users
|--------index.tmpl
页眉、页脚和侧边栏的代码类似于:
{{define "header"}}
<!-- some html here -->
{{ end }}
....
default.tmpl
如下:
{{ define "default" }}
{{ template "header" }}
{{ template "sidebar" }}
<div class="content-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<h2 class="page-title">Dashboard</h2>
{{ template "content" .}}
</div>
</div>
</div>
</div>
{{ template "footer" }}
{{ end }}
和users\index.tmpl
{{define "index"}}
{{template "default"}}
{{end}}
{{define "content"}}
<p>Hello world</p>
{{end}}
现在,我使用解析文件
t := &Template{}
t.templates = template.Must(template.ParseGlob("views/layouts/*"))
t.templates = template.Must(template.ParseGlob("views/user/*"))
并尝试渲染它
func User(c echo.Context) error {
return c.Render(http.StatusOK, "index", nil)
}
但我只收到内部服务器错误。我也不知道如何调试模板。users\index.tmpl
如果其中不包含其他模板标签,则该代码有效。但是当我尝试在其中包含主模板时,错误返回。我在这里做错了什么?