按理说 用r.method =="get" 的时候 表单传过来才会触发他,然后返回值, 否则非表单的时候 显示 HTML
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
大哥,谁说表单传过来应该是 GET?GET 和 POST 啥区别,先弄懂这个吧!
@channel 应该怎么解决呢
我在.net中 一般用于 if (HttpContext.Current.Request.HttpMethod == "POST") 这个来检测是否POST还是什么 如果非POST就得到模板 因为我习惯把 获取模板和POST GET等放在一个函数中, 所以需要判断检测POST GET 否则获取模板
那你这里也用这种方式啊,为啥到了 Go 里面,就变成和 get 比较,而不是 POST,还用小写的 get …… 为啥呢?
package main import ( "html/template" "net/http" ) type ContactDetails struct { Email string Subject string Message string } func main() { tmpl := template.Must(template.ParseFiles("forms.html")) http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { tmpl.Execute(w, nil) return } details := ContactDetails{ Email: r.FormValue("email"), Subject: r.FormValue("subject"), Message: r.FormValue("message"), } _ = details tmpl.Execute(w, struct{Success bool}{true}) }) http.ListenAndServe(":8080", nil) }
我觉得你可以参考一下这个~~~
`单行代码`
大哥,谁说表单传过来应该是 GET?GET 和 POST 啥区别,先弄懂这个吧!
@channel 应该怎么解决呢
我在.net中 一般用于 if (HttpContext.Current.Request.HttpMethod == "POST") 这个来检测是否POST还是什么 如果非POST就得到模板 因为我习惯把 获取模板和POST GET等放在一个函数中, 所以需要判断检测POST GET 否则获取模板
那你这里也用这种方式啊,为啥到了 Go 里面,就变成和 get 比较,而不是 POST,还用小写的 get …… 为啥呢?
我觉得你可以参考一下这个~~~