我有一个页面,可以从URL获取一个变量,并使用它从数据库中获取一些数据。然后,我将数据传递到模板并显示结果。 我要做的是将变量和数据传递给模板。 在我的代码中,我有以下内容:
type Username struct {
Username string
}
type Order struct {
Order_id int
Customer string
Date_of_purchase string
}
func OrderPage(w http.ResponseWriter, r *http.Request) {
db := dbConnection()
username := r.URL.Query().Get("username")
query, err := db.Query("SELECT * FROM orders WHERE customer=?", username)
if err != nil {
panic(err.Error())
}
defer query.Close()
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(results)
temp.ExecuteTemplate(w, "user.html", results)
}
我不确定如何传递username := r.URL.Query().Get("username")
,以便以后可以从模板访问它:
<body>
<h2>Hello!</h2>
<h4>Here's a list of your orders with us:</h4>
<ul>
{{ range . }}
<li><a href="product?order={{ .Order_id }}">{{ .Order_id }}</a></li>
{{ end }}
</ul>
</body>
我仍在学习此方法,所以我什至不知道如何处理。我可以这样做吗?如何访问模板中的变量和数据?
答案 0 :(得分:2)
将包含查询结果和用户名的值传递给模板:
err := temp.ExecuteTemplate(w, "user.html", &struct {
Orders []Order
Username string
}{
results,
username,
})
if err != nil {
// handle error
}
像这样使用它:
<body>
<h2>Hello {{.Username}}!</h2>
<h4>Here's a list of your orders with us:</h4>
<ul>
{{ range .Orders }}
<li><a href="product?order={{ .Order_id }}">{{ .Order_id }}</a></li>
{{ end }}
</ul>
</body>