1、解决办法
在定义结构体时,字段首字母大写即可解决问题;如
type Item struct {
Name string //字段名首字母需大写,才可以在html中进行显示
Price int
Erp_product_model string
}
2、示例
login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
</head>
<body>
<form action="/login" method="post" enctype="application/x-www-form-urlencoded" novalidate="off">
<div>
用户名<input type="text" name="username" placeholder="123"/>
</div>
<div>
<input type="submit" value="查询" />
</div>
</form>
<table border='1'>
{{range.items}}
<tr><td>{{.Name}}</td>
<td>{{.Price}}</td>
<td>{{.Erp_product_model}}</td></tr>
{{end}}
</table>
<div>{{.query_fail}}</div>
{{.comment}}
</body>
</html>
main.go
// golang_web project main.go
package main
import (
"fmt"
"html/template"
"log"
"net/http"
"time"
)
type Item struct {
Name string //字段名首字母需大写,才可以在html中进行显示
Price int
Erp_product_model string
}
// 登录页面
func loginhanler(w http.ResponseWriter, r *http.Request) {
// 如果是post请求,注意先后顺序;即用户点击提交按钮
if r.Method == http.MethodPost {
// 解析表单,并且校验
r.ParseForm()
userName := r.FormValue("username") //型号
fmt.Println(userName)
// 如果输入正确,则发送cookie,并给出反馈
if userName == "123" {
// 解析模板
t, err := template.ParseFiles("login.html")
if err != nil {
log.Fatal(err)
}
// 准备好参数
now := time.Now().Format("2006/01/02 15:04:05")
items := []Item{
{"iphone", 699, "iphone"},
{"ipad", 799, "ipad"},
{"iWatch", 199, "iWatch"},
{"MacBook", 999, "MacBook"},
}
data := map[string]interface{}{
"now": now,
"items": items,
}
// 渲染模板
t.Execute(w, data)
} else {
// 解析模板
t, err := template.ParseFiles("login.html")
if err != nil {
log.Fatal(err)
}
now := time.Now().Format("2006/01/02 15:04:05")
items := []Item{}
query_fail := "数据查询失败"
data := map[string]interface{}{
"now": now,
"items": items,
"query_fail": query_fail,
}
// 渲染模板
t.Execute(w, data)
}
} else { //显示登录页面
// 解析模板
t, err := template.ParseFiles("login.html")
if err != nil {
log.Fatal(err)
}
// 准备好参数
now := time.Now().Format("2006/01/02 15:04:05")
items := []Item{}
data := map[string]interface{}{
"now": now,
"items": items,
}
// 渲染模板
t.Execute(w, data)
}
}
// 拿到cookie,并且显示出来,说明登录成功
func userInfoHandler(w http.ResponseWriter, r *http.Request) {
username, err := r.Cookie("username")
if err != nil {
log.Fatal(err)
}
t, err := template.ParseFiles("user_info.html")
if err != nil {
log.Fatal(err)
}
t.Execute(w, username.Value)
}
// 主函数,程序入口
func main() {
mux := http.NewServeMux()
// 访问http: //localhost:8000/login;会调用loginhanler()函数
mux.HandleFunc("/login", loginhanler)
// mux.HandleFunc("/userinfo", userInfoHandler)
server := &http.Server{
Addr: ":8000",
Handler: mux,
}
err := server.ListenAndServe()
if err != nil {
log.Fatal(err)
}
}