Templates 在模板中显示查询结果时出现问题

Templates 在模板中显示查询结果时出现问题,templates,go,Templates,Go,我正在处理一个页面,该页面将从url获取一个变量,对mysql db运行一个查询,获取结果并在页面上显示它们。我在这里使用模板。 我正在学习一些教程并完成了大部分工作,但是有一件事我被卡住了 func dbConnection() (db *sql.DB) { db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/dbname") if err != nil { panic(err.Error()) } retur

我正在处理一个页面,该页面将从url获取一个变量,对mysql db运行一个查询,获取结果并在页面上显示它们。我在这里使用模板。 我正在学习一些教程并完成了大部分工作,但是有一件事我被卡住了

func dbConnection() (db *sql.DB) {
db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/dbname")
if err != nil {
    panic(err.Error())
}
return db
}

type Order struct {
   Order_id int
   Customer string
   Date_of_purchase string
}
这是我的函数,用来获取数据并呈现模板:

func CustomerPage(w http.ResponseWriter, r *http.Request)  {
db := dbConnection()
//customer := r.URL.Query().Get("username")
query, err := db.Query("SELECT * FROM orders WHERE customer='David'")
if err != nil {
    panic(err.Error())
}
order := Order{}
results := []Order{}
for query.Next(){
    var order_id int
    var customer, date_of_purchase string
    query.Scan(&order_id, &customer, &date_of_purchase)
    order.Order_id = order_id
    order.Customer = customer
    order.Date_of_purchase = date_of_purchase
    results = append(results, order)
    fmt.Println(order_id)
    fmt.Println(customer)
}
fmt.Println(results)
temp, err := template.ParseFiles("templates/orders.html")
temp.Execute(w, results)
defer query.Close()
}
<h1>Hello</h1>
<h3>Your username is {{ .Customer }}</h3>
{{ range . }}
<h2> {{ .Order_id }}</h2>
{{ end }}
最后是我的模板:

func CustomerPage(w http.ResponseWriter, r *http.Request)  {
db := dbConnection()
//customer := r.URL.Query().Get("username")
query, err := db.Query("SELECT * FROM orders WHERE customer='David'")
if err != nil {
    panic(err.Error())
}
order := Order{}
results := []Order{}
for query.Next(){
    var order_id int
    var customer, date_of_purchase string
    query.Scan(&order_id, &customer, &date_of_purchase)
    order.Order_id = order_id
    order.Customer = customer
    order.Date_of_purchase = date_of_purchase
    results = append(results, order)
    fmt.Println(order_id)
    fmt.Println(customer)
}
fmt.Println(results)
temp, err := template.ParseFiles("templates/orders.html")
temp.Execute(w, results)
defer query.Close()
}
<h1>Hello</h1>
<h3>Your username is {{ .Customer }}</h3>
{{ range . }}
<h2> {{ .Order_id }}</h2>
{{ end }}
我遇到的问题是在模板中显示此数据。我只得到硬编码文本,没有变量。
我做错了什么?

“我做错了什么?”您没有检查temp.Execute返回的错误。我现在检查了它,得到了以下信息:模板:orders.html:2:23:执行“orders.html”at:无法评估[]main.order类型中的字段Customer我理解这一点的方式是调用结构中定义的.Customer?“无法评估[]main.Order类型中的字段Customer”的意思就是它所说的。
具有类型
[]订单
,切片没有字段,因此
。Customer
是无意义的。您忘记了
范围
操作或
索引
调用或类似的内容。