Go 使用模板响应HTTP请求

示例

可以http.ResponseWriter在Go中使用模板将响应写入。如果您希望创建动态页面,这将证明是一种便捷的工具。

(要了解模板在Go中的工作方式,请访问Go模板文档页面。)

继续使用一个简单的示例来利用html/templateHTTP响应HTTP请求:

package main

import(
    "html/template"
    "net/http"
    "log"
)

func main(){
    http.HandleFunc("/",WelcomeHandler)
    http.ListenAndServe(":8080",nil)
}

type User struct{
    Name string
    nationality string //未导出的字段。
}

func check(err error){
    if err != nil{
        log.Fatal(err)
    }
}

func WelcomeHandler(w http.ResponseWriter, r *http.Request){
    ifr.Method== "GET"{
        t,err := template.ParseFiles("welcomeform.html")
        check(err)
        t.Execute(w,nil)
    }else{
        r.ParseForm()
        myUser := User{}
       myUser.Name= r.Form.Get("entered_name")
       myUser.nationality= r.Form.Get("entered_nationality")
        t, err := template.ParseFiles("welcomeresponse.html")
        check(err)
        t.Execute(w,myUser)
    }
}

哪里,内容

  1. welcomeform.html 是:

<head>
    <title> Help us greet you </title>
</head>
<body>
    <form method="POST" action="/">
        Enter Name: <input type="text" name="entered_name">
        Enter Nationality: <input type="text" name="entered_nationality">
        <input type="submit" value="问候我!">
    </form>
</body>

  1. welcomeresponse.html 是:

<head>
    <title> Greetings, {{.Name}} </title>
</head>
<body>
    Greetings, {{.Name}}.<br>
    We know you are a {{.nationality}}!
</body>

注意:

  1. 确保.html文件在正确的目录中。

  2. http://localhost:8080/启动服务器后可以访问何时。

  3. 提交表单后可以看到,模板包无法按预期分析该结构的未导出国籍字段。