可以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) } }
哪里,内容
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>
welcomeresponse.html 是:
<head> <title> Greetings, {{.Name}} </title> </head> <body> Greetings, {{.Name}}.<br> We know you are a {{.nationality}}! </body>
注意:
确保.html文件在正确的目录中。
http://localhost:8080/启动服务器后可以访问何时。
提交表单后可以看到,模板包无法按预期分析该结构的未导出国籍字段。