将数据和变量传递给Golang中的模板

问题描述 投票:0回答:1

我有一个页面,我从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>

我仍在学习,所以我什至不知道该如何处理。我可以做类似的事情,如何访问模板中的变量和数据?

go go-templates
1个回答
0
投票

将包含查询结果和用户名的值传递给模板:

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>
© www.soinside.com 2019 - 2024. All rights reserved.