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

占位符不被替换

占位符不被替换

Go
慕后森 2022-07-25 12:08:31
我正在试验这个包http/template。我还已经管理了例如页眉、页脚、导航栏等包含在基本模板中:{{ define "base" }}    <!DOCTYPE html>    <html>    <!-- Start Head -->    <head>        {{ template "head" }}    </head>    <!-- End Head -->    <!-- Start Body -->    <body>    {{ template "navbar" }}    {{ template "content" }}    {{ template "footer" }}    </body>    <!-- End Body -->    </html>{{ end }}404页面:{{ define "content" }}    [...]                    <h1 class="text-light text-right">404</h1>                    <small>{{.CurrentURL}}</small>    [...]{{ end }}所以这里的变量CurrentURL应该替换为当前的 URL。但是,这仅""在网站上显示为空 ( ):<small></small>但是现在我想替换一个变量,该变量在网页上仅显示为“”。围棋代码:解析器:func (parser *TemplateParser) ParseTemplate(name string) (tpl *template.Template, err error) {  root, err := template.New("root").Parse(rootTmpl)  // ...  return root.ParseFiles(files...)}路线:func (ws *WebServer) Exec(name string, r *http.Request, w http.ResponseWriter, data map[string]interface{}) (err error) {    // ...    // add default data    data["CurrentURL"] = r.URL.RequestURI()    // ...    return tpl.Execute(w, data)}即使有一个数组,我也不能使用range等:    type Test struct {        CurrentURL string        C []string    }    t := Test{        CurrentURL: "Current URL",        C: []string {"C1", "c2", "ccc4"},    }    tpl.Execute(w, t) <ul>{{range .C}}  <li>{{.}}</li>{{end}}</ul><!-- No <li></li> is created -->我究竟做错了什么?
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

您必须将上下文传递给实例化的模板。利用

{{ template "content" .}}

将数据传递.content模板。


查看完整回答
反对 回复 2022-07-25
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

您没有将任何数据传递给子模板。根据文档:


{{template "name"}}

    The template with the specified name is executed with nil data.


{{template "name" pipeline}}

    The template with the specified name is executed with dot set

    to the value of the pipeline.


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

添加回答

举报

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