我正在尝试使用html/template包在Golang的网页中显示信息表。模板的当前实现我已将输出标准化。
我希望能够将模板生成的页面内容传递给另一个将呈现我的网页的功能。
如何实现呢?
下面附有代码说明。基本上,我想捕获t.Execute(os.Stdout,person)的结果,其中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)
}
最佳答案
将模板执行到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())
关于go - 如何使用Golang模板显示HTML表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47643704/