1

我对 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 打开浏览器时,我遇到了我提到的错误。

我错过了什么?

4

0 回答 0