我无法弄清楚如何将从 MySQL 数据库获取的数据传递到我的 HTML 模板并显示表格中的每一列。我发现的说明工作正常,但是当我尝试将它实现到我自己的代码中时,它不会将数据传递到我的 HTML,并且表格仍然是空的。去代码:var table = NewView("bootstrap", "views/pages/table.gohtml")func main() { http.Handle("/views/", http.StripPrefix("/views/", http.FileServer(http.Dir("./views")))) http.HandleFunc("/table", tableHandler) fmt.Println("server running on port :8080") http.ListenAndServe(":8080", nil)}func tableHandler(w http.ResponseWriter, r *http.Request) { db := ipSQL.SqlConnect() data := ipSQL.SqlSelect(db) // This returns a nested struct and stores it in the 'data' variable. /* type Data struct { Items []Devicevalue_view } type Devicevalue_view struct { Name string Ip string Pcn string Description string } */ fmt.Println(data) //The println prints the following: 'test1: {[{Name1 192.168.166.13 123456 webserver} {Name2 192.168.166.14 123456 webserver2}]}' err := table.Render(w, data) //This renders the page together with a default layout. table is initialized somewhere else in this way: // var table = NewView("bootstrap", "views/pages/table.gohtml") --> This is a function I found and confirmed to be working. if err != nil { panic(err) }}我一直在使用以下代码从名为 bootstrap.gohtml 的不同文件呈现我的网页的标准布局,并从我指定的文件中获取 HTML 的主体。(在 ---UPDATE 2 中添加了这个)func NewView(layout string, files ...string) *View { files = append(layoutFiles(), files...) t, err := template.ParseFiles(files...) if err != nil { panic(err) } return &View{ Template: t, Layout: layout, }}type View struct { Template *template.Template Layout string}func (v *View) Render(w http.ResponseWriter, data interface{}) error { spew.Dump(data) return v.Template.ExecuteTemplate(w, v.Layout, data)}
1 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
我通过将 {{template "yield"}} 更改为 {{template "yield" .}} 使其工作。据我了解,这将使用管道将变量解析到下一个模板文件。
{{define "bootstrap"
<head>some links to css among other things</head>
<nav>a navigation bar</nav>
{{template "yield" .}}
<foot>footer</foot>
{{end}}
yield 模板现在可以访问我解析到 bootstrap 模板的变量。
- 1 回答
- 0 关注
- 91 浏览
添加回答
举报
0/150
提交
取消