恐慌:模板:重新定义模板

时间:2014-12-14 13:46:07

标签: go go-templates

我得到layout.tmpl

<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>  
    <div id='left'>
        {{template "left" .}}
    </div>
    <div id='right'>
        {{template "right" .}}
    </div>
</body>
</html>

mainPage.tmpl

{{define "left"}}
  left content
{{end}}

{{define "right"}}
    right content
{{end}}

someOtherPage.tmpl

{{define "left"}}
  left content 2
{{end}}

{{define "right"}}
    right content 2
{{end}}
使用该模板的{p>和martini go网络应用martiniWebApp.go

package main
import (
    "github.com/go-martini/martini"
    "github.com/martini-contrib/render"
)

func main() {
    m := martini.Classic()
    m.Use(render.Renderer(render.Options{
        Layout: "layout",
    }))

    m.Get("/", func(r render.Render) {
        r.HTML(200, "mainPage", nil)
    })

    m.Get("/somePage", func(r render.Render) {
        r.HTML(200, "someOtherPage", nil)
    })
    m.Run()
}

当我运行我的应用go run martiniWebApp.go时,我收到错误:

panic: template: redefinition of template "left"

如果我从网络应用中删除文件someOtherPage.tmpl并路由/somePage,则错误消失。 但是如何组织布局块结构来重用通用布局html并在每个特定页面上只定义几个块呢?

1 个答案:

答案 0 :(得分:1)

您可以采取相反的方式,并在页面中包含您想要的部分。像

这样的东西
{{template "header.html" .}}

 contents 

{{template "footer.html" .}}