我无法弄清楚如何将从 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)
}
茅侃侃
相关分类