我得到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并在每个特定页面上只定义几个块呢?
答案 0 :(得分:1)
您可以采取相反的方式,并在页面中包含您想要的部分。像
这样的东西{{template "header.html" .}}
contents
{{template "footer.html" .}}