单个 Golang Web 模板中来自数据库的多个表单
Multiple forms from database in a single Golang web template
我正在 Golang 中做我的第一个项目,我正在尝试创建一个包含两个列表的表单以供选择,如下所示:
webpage with a form, it has two lists to choose options from and a text field
但是,如果我想让这些列表从 SQLite 数据库的两个 table 中检索它们的条目,模块“模板”只允许我为每个模板发送一个查询,例如
func Person(w http.ResponseWriter, r *http.Request) {
db := ConnectDB()
arrP := GetPerson(db)
templates.ExecuteTemplate(w, "person", arrP)
}
因此,只有第一个列表会从范围中提取信息(在这种特殊情况下,它将显示 'person' table 中的有效选项,第二个列表将继续显示我自己硬编码的条目。
感谢@Zombo 的回复。为了澄清一些事情,我发布的函数打开了与数据库的连接
db := ConnectDB()
然后它创建 arrP('person' 类型的数组)并调用内置的 templates.ExecuteTemplate()
templates.ExecuteTemplate(w, "person", arrP)
这将呈现“人”html 模板。但是,在同一页面中,我试图放置另一个选择表单来选择 'Service'。如果我尝试
func Person(w http.ResponseWriter, r *http.Request) {
db := ConnectDB()
arrP := GetPerson(db)
arrS := GetService(db)
templates.ExecuteTemplate(w, "person", arrP, arrS)
}
它会抱怨,因为我传递的参数比预期的要多。因此,只有人员名单才能正确呈现数据库中的信息;但是,服务列表没有任何来源可以提取其条目。
@Zombo 给出了一个简洁的答案,使用 map 我们可以将多个数组传递给模板以呈现多个列表/表格。
map[string]any{“arrP”: arrP, “arrS”: arrS}
然后在.tmpl文件中使用$.arrS
我正在 Golang 中做我的第一个项目,我正在尝试创建一个包含两个列表的表单以供选择,如下所示:
webpage with a form, it has two lists to choose options from and a text field
但是,如果我想让这些列表从 SQLite 数据库的两个 table 中检索它们的条目,模块“模板”只允许我为每个模板发送一个查询,例如
func Person(w http.ResponseWriter, r *http.Request) {
db := ConnectDB()
arrP := GetPerson(db)
templates.ExecuteTemplate(w, "person", arrP)
}
因此,只有第一个列表会从范围中提取信息(在这种特殊情况下,它将显示 'person' table 中的有效选项,第二个列表将继续显示我自己硬编码的条目。
感谢@Zombo 的回复。为了澄清一些事情,我发布的函数打开了与数据库的连接
db := ConnectDB()
然后它创建 arrP('person' 类型的数组)并调用内置的 templates.ExecuteTemplate()
templates.ExecuteTemplate(w, "person", arrP)
这将呈现“人”html 模板。但是,在同一页面中,我试图放置另一个选择表单来选择 'Service'。如果我尝试
func Person(w http.ResponseWriter, r *http.Request) {
db := ConnectDB()
arrP := GetPerson(db)
arrS := GetService(db)
templates.ExecuteTemplate(w, "person", arrP, arrS)
}
它会抱怨,因为我传递的参数比预期的要多。因此,只有人员名单才能正确呈现数据库中的信息;但是,服务列表没有任何来源可以提取其条目。
@Zombo 给出了一个简洁的答案,使用 map 我们可以将多个数组传递给模板以呈现多个列表/表格。
map[string]any{“arrP”: arrP, “arrS”: arrS}
然后在.tmpl文件中使用$.arrS