猿问

将数据和变量传递给模板

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

我仍在学习这一点,所以我什至不知道如何解决这个问题。我可以做类似的事情吗?如何访问模板中的变量和数据?


函数式编程
浏览 93回答 1
1回答

浮云间

将包含查询结果和用户名的值传递给模板:err := temp.ExecuteTemplate(w, "user.html", &struct {&nbsp; &nbsp; Orders []Order&nbsp; &nbsp; Username string}{&nbsp; &nbsp; results,&nbsp; &nbsp; username,})if err != nil {&nbsp; &nbsp;// handle error}像这样使用它:<body>&nbsp; &nbsp; <h2>Hello {{.Username}}!</h2>&nbsp; &nbsp; <h4>Here's a list of your orders with us:</h4>&nbsp; &nbsp; <ul>&nbsp; &nbsp; &nbsp; &nbsp; {{ range .Orders }}&nbsp; &nbsp; &nbsp; &nbsp; <li><a href="product?order={{ .Order_id }}">{{ .Order_id }}</a></li>&nbsp; &nbsp; &nbsp; &nbsp; {{ end }}&nbsp; &nbsp; </ul></body>
随时随地看视频慕课网APP

相关分类

Go
我要回答