html / template:" layout"未定义

时间:2014-12-14 10:12:55

标签: go martini

我尝试将martini框架与布局模板一起使用:

package main

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

func main() {
    m := martini.Classic()

    m.Use(render.Renderer(render.Options{Directory: "./templates",
        Layout:     "layout",
        Extensions: []string{".tmpl"},
    }))

    m.Get("/", func(r render.Render) {
        r.HTML(200, "mainPage", map[string]interface{}{"Title": "some title", "H1": "some h1"})
    })

    m.Run()
}

在与此main.go文件相同的文件夹中,我获得了文件夹templateslayout.tmpl文件:

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

mainPage.tmpl文件:

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

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

当我在浏览器中打开http://localhost:3000/时,我看到错误: html/template: "layout" is undefined

2 个答案:

答案 0 :(得分:2)

我的问题是我从随机目录运行go文件。为了解决这个问题,我将目录(cd)更改为templates文件夹的父目录。

答案 1 :(得分:0)

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

html

之后制作正确的</body>关闭代码

就是这样:

<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>