go - 将数据和变量传递给模板
问题描述
我有一个页面,我从 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>
我还在学习这个,所以我什至不知道如何处理这个。我可以做这样的事情吗?如何访问模板中的变量和数据?
解决方案
将包含查询结果和用户名的值传递给模板:
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>
推荐阅读
- spring-boot - JHipster rest api 只允许微服务
- ruby - 谁能给我关于如何用星号替换字母数量的建议?
- jquery - 科尔多瓦无法构建 ios
- docker - Pachyderm 管道无法拉取 docker 映像
- android - Httpurlconnection上传文件触发网络丢失重置或恢复
- r - 将类实例另存为 JSON
- angular - this.ref.detectChanges() 在我的整个应用程序中都需要,以防止无限加载
- html - 宽度:100% 在 td 表格单元格内不起作用
- mysql - 获得 1 小时的房间可用性增量 MySQL
- android - 如何使用 Google Drive API 上传文件?