我已经从数据库中获取了所有数据,然后数据进入了循环。除了发生的循环外,我还想插入其他数据,例如Session和Title。然后将其放入模板中。
我猜想使用struct或slice,但是学习后找不到解决方案。
type Sekolah struct {
Id int
Nama string
Alamat string
Telp string
}
我有一个上面的结构,然后使句柄功能
http.HandleFunc("/sekolah", func(w http.ResponseWriter, r *http.Request) {
//THIS IS THE DATA I WANT TO SERVE IN TEMPLATE
var title := "Some Title"
var session := "MySession"
db, errdb := sql.Open("postgres", koneksi)
if errdb != nil {
fmt.Println(errdb)
}
rows, err := db.Query("SELECT id, nama, alamat, telp FROM public.m_sekolah")
if err != nil {
fmt.Println(err)
http.Error(w, "there was an error", http.StatusInternalServerError)
return
}
var id int
var nama string
var alamat string
var telp string
var sk []Sekolah
for rows.Next(){
err = rows.Scan(&id, &nama, &alamat, &telp)
if err != nil {
fmt.Println(err)
http.Error(w, "There was an error", http.StatusInternalServerError)
return
}
sk = append(sk, Sekolah{Id: id, Nama: nama, Alamat: alamat, Telp: telp})
}
err = tmpl.ExecuteTemplate(w, "data_sekolah", sk)
if err != nil {
fmt.Println(err)
}
})
我想将Title和Session数据输入到SK数据中,但不参与循环,然后将其粘贴到模板中。谁能帮我吗?
答案 0 :(得分:0)
将所有数据放入地图中,然后将地图传递给模板。像这样的东西。
datamap := make(map[string]interface{})
datamap["title"] = <your title>
datamap["session"] = <your session>
datamap["sk"] = <your sk array>
然后在模板上访问这样的字段。
<p>{{.title}}</p>
<p>{{.session}}</p>
{{range .sk}}
<p>{{.Nama}}</p>
{{end}}
注意。这段代码未经测试,但我已经解决了我以前的项目中的确切问题。干杯