func Render_(tmp string,ins Instance)[]byte{
// tmp 为已定义模板的路径 如 "templates/http.tmpl"
tpl,err := template.ParseFiles(tmp)
if err != nil{
log.Fatal(err)
}
data := ins
var buf bytes.Buffer
if err := tpl.ExecuteTemplate(&buf,tmp,data); err != nil {
log.Fatal(err)
}
return []byte(buf.String())
//fmt.Println(buf.String())
}
传入的 ins 对象包括三个属性,装载到已有的模板中,模板里的待渲染的变量是这 3 个的子集(有些模板有 1 个 有些有 2 个)。 请问用原生 template 库该如何实现呢 我上面写的好像实现不了 报 “templates/http.tmpl” undefied
1
wangsongyan 2020-02-21 09:35:30 +08:00
ExecuteTemplate,第二个参数是模板文件名,传"http.tmpl"
https://gist.github.com/wangsongyan/f9e187b8f5a7933d5c61d0dab68c56db |
2
vinsec OP @wangsongyan 我测了下 ExecuteTemplate 的第二个参数确切来说应该是模板里的 {{define "form"}} 里的"form",ParseFiles 这里才是模板绝对路径。
|