为了账号安全,请及时绑定邮箱和手机立即绑定

go html/template 中的可选模板?

go html/template 中的可选模板?

Go
牧羊人nacy 2021-06-03 18:41:03
给定一组模板,例如:布局.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}}。它可能不是超级优雅,但很容易理解。

请注意,您不需要重复空定义。您可以将它们放入主模板中,并仅在需要时在包含的模板中重新定义它们。


查看完整回答
反对 回复 2021-06-07
  • 2 回答
  • 0 关注
  • 222 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信