golang中的渲染模板

我在 Go 中使用 echo 框架来创建一个 Web 应用程序。我有一个名为templatesinside的目录,其中有两个目录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不包含其他模板标签,则该代码有效。但是当我尝试在其中包含主模板时,错误返回。我在这里做错了什么?


MYYA
浏览 131回答 1
1回答

UYOU

设法解决了这个问题。此页面https://elithrar.github.io/article/approximating-html-template-inheritance/有所帮助。基本上,我必须将解析模板的代码更改为:tpls, err := filepath.Glob("views/user/*")if err != nil {&nbsp; &nbsp; log.Fatal(err)}layouts, err := filepath.Glob("views/layouts/*")if err != nil {&nbsp; &nbsp; log.Fatal(err)}for _, layout := range layouts {&nbsp; &nbsp; files := append(layouts, tpls)&nbsp; &nbsp; t.templates = template.Must(template.ParseFiles(files...))}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go