我正在使用 Golang 模板构建一个网站,并且需要在页脚模板中显示一些文本。它是一个在 header.html 和 index.html 中解析的变量。package mainimport ( "fmt" "html/template" "log" "net/http" "github.com/gorilla/handlers" "github.com/gorilla/mux")type Data struct { Title string Field1 string Field2 template.HTML FooterField string}var tmpl *template.Templatefunc main() { router := mux.NewRouter() port := ":8085" data := Data{} data.Title = "Title" data.FooterField = "This text does not appear in the footer template" router.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { err := tmpl.ExecuteTemplate(w, "index", data) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } }) var err error tmpl, err = template.ParseGlob("views/*") if err != nil { panic(err.Error()) } router.PathPrefix("/").HandlerFunc(func(res http.ResponseWriter, req *http.Request) { http.FileServer(http.Dir("./static/")).ServeHTTP(res, req) }) fmt.Println("Server running on localhost" + port) err = http.ListenAndServe(port, handlers.CompressHandler(router)) if err != nil { log.Fatal(err) }}在 ./views 我有 header.html{{define "header"}}<!doctype html><html><head><meta charset="utf-8"><title>{{.Title}}</title></head><body><h1>Header template</h1><div>{{.FooterField}}</div>{{end}}索引.html{{define "index"}}{{template "header" . }}<h1>Index template</h1><div>{{.FooterField}}</div>{{template "footer"}}{{end}}页脚.html{{define "footer"}}<h1>Footer template</h1>Missing FooterField->{{.FooterField}}</body></html>{{end}}最后在浏览器中输出 http://localhost:8085/Header templateThis text does not appear in the footer templateIndex templateThis text does not appear in the footer templateFooter templateMissing FooterField->只需复制和粘贴即可复制此代码。任何线索我的问题是什么?
1 回答
手掌心
TA贡献1942条经验 获得超3个赞
您没有将任何内容传递给页脚模板。但是你传递.
给标题模板,所以你.FooterField
只看到那里的值。
将其更改为index.html
:{{template "footer" . }}
- 1 回答
- 0 关注
- 80 浏览
添加回答
举报
0/150
提交
取消