给定一组模板,例如:布局.tpl<html><head><title>Some title</title>{{template extracss}}</head><body><h1>Page title</h1>{{template content .}}</body></html>主页.tpl{{define "content"}}<p>page content goes here</p>{{end}}编辑.tpl{{define "content"}}<form>form content goes here</form>{{end}}{{define "extracss"}}<style>body{background:pink}</style>{{end}}使用它来呈现模板:func Render(w http.ResponseWriter, tmpname string, data interface{}) { t, err := template.ParseFiles("views/layout.tpl", "views/"+tmpname+".tpl") // parse error if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } if err := t.Execute(w, data); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) }}edit.tpl 将正确呈现,因为它定义了“extracss”,home.tpl 不会因为模板解析器正确地说“没有这样的模板“extracss””。那么我将使用什么机制来允许使用“可选”模板?有任何想法吗?
2 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
一个空的定义作品:{{define "extracss"}}{{end}}
。它可能不是超级优雅,但很容易理解。
请注意,您不需要重复空定义。您可以将它们放入主模板中,并仅在需要时在包含的模板中重新定义它们。
- 2 回答
- 0 关注
- 222 浏览
添加回答
举报
0/150
提交
取消