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

如何将嵌套结构传递给 gohtml 模板文件并将其显示在表格中?

如何将嵌套结构传递给 gohtml 模板文件并将其显示在表格中?

Go
眼眸繁星 2022-11-28 17:19:25
我无法弄清楚如何将从 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 模板的变量。


查看完整回答
反对 回复 2022-11-28
  • 1 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

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