Передать данные и переменную в шаблон - PullRequest
0 голосов
/ 06 октября 2019

У меня есть страница, где я получаю переменную из 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>

ЯЯ все еще учусь этому, поэтому я даже не знаю, как к этому подойти. Могу ли я сделать что-то подобное и как получить доступ к переменной и данным в шаблоне?

1 Ответ

2 голосов
/ 06 октября 2019

Передайте значение, содержащее результаты запроса и имя пользователя, в шаблон:

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>
...