我对 go、martini 以及 martini 如何与模板一起使用有疑问。
package main
import (
"github.com/go-martini/martini"
"github.com/martini-contrib/render"
)
type Page struct {
Caption string
Body string
Tmpl string
}
func main() {
webApp = martini.Classic()
webApp.Get("/", indexHandler)
webApp.Use(render.Renderer(render.Options{
Directory: "templates",
Layout: "layout",
Extensions: []string{".tmpl", ".html"},
Delims: render.Delims{"{{", "}}"},
Charset: "UTF-8",
IndentJSON: true}))
webApp.Run()
}
func indexHandler(r render.Render) {
var indexPage Page
indexPage.Caption = "index"
indexPage.Tmpl = "subIndex"
r.HTML(http.StatusOK, "index", indexPage)
}
如果我在 index.tmpl 中使用以下代码:
<h2>Caption{{.Caption}}</h2>
{{ .Tmpl }}
// 字幕有效,.Tmpl 有效,并将 subIndex 视为字符串)
如果我在 index.tmpl 中使用以下代码:
<h2>Caption{{.Caption}}</h2>
{{ template .Tmpl }}
我在模板调用中收到错误“Tmpl”相同的错误消息
<h2>Caption{{.Caption}}</h2>
{{ $templateName := .Tmpl }}
{{ $templateName }}
{{ template $templateName }}
subIndex.tmpl 很简单
<h3>subindex</h3>
我已经用 go build 构建了程序,并盯着它,当我用 localhost:3000 打开浏览器时,我遇到了我提到的错误。
我错过了什么?