我正在尝试使用html / template包在Golang的网页中显示信息表。模板的当前实现我将输出标准输出。
我希望能够将模板生成的页面内容传递给另一个将呈现我的网页的功能。
如何实现这一目标?
下面附带的代码说明。基本上,我想捕获t.Execute(os.Stdout,persons)的结果,其中person是一个字符串片段。我知道t.Execute只返回一个错误。但它打印出标准模板t以及人名值。我想将组合模板和人物阵列文本捕获到变量中。我想在下面的代码中将内容分配给body变量。
t := template.Must(template.New("").Parse(`<table>{{range .}}<tr><td>{{.}}</td></tr>{{end}}</table>`))
if err := t.Execute(os.Stdout, persons); err != nil {
log.Fatal(err)
}
title := "User Info Page"
p := &Page{Title: title, Body: []byte(body)}
renderTemplate(w, "view", p)
}
答案 0 :(得分:3)
将模板执行到bytes.Buffer。使用缓冲区的内容作为正文。
t := template.Must(template.New("").Parse(`<table>{{range .}}<tr><td>{{.}}</td></tr>{{end}}</table>`))
var body bytes.Buffer
if err := t.Execute(&body, persons); err != nil {
log.Fatal(err)
}
title := "User Info Page"
p := &Page{Title: title, Body: body.Bytes()}
renderTemplate(w, "view", p)
如果还需要打印到stdout,请在执行模板后添加以下代码:
os.Stdout.Write(body.Bytes())