我正在试验这个包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 回答
繁星点点滴滴
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.
- 2 回答
- 0 关注
- 113 浏览
添加回答
举报
0/150
提交
取消