1 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
下面是你的關(guān)于處理程序的外觀示例。請(qǐng)記住,該示例只是使用單個(gè)處理程序處理 GET 和 POST 請(qǐng)求的通用結(jié)構(gòu)的圖示。據(jù)我所知,您問(wèn)題中的代碼包含許多其他邏輯錯(cuò)誤,您仍然需要解決這些錯(cuò)誤。
請(qǐng)注意,呈現(xiàn)模板和處理數(shù)據(jù)輸入的邏輯在 GET 和 POST HTTP 方法之間拆分。某些路由器允許基于方法的處理程序注冊(cè),在這種情況下,您可以有兩個(gè)單獨(dú)的處理程序,一個(gè)用于,另一個(gè)用于或某物。showAboutcreateAbout
考慮到塊的結(jié)構(gòu),此示例中的語(yǔ)句的使用是不必要的,但是,我確實(shí)包含它們以明確說(shuō)明,一般來(lái)說(shuō),一旦您寫入響應(yīng),您就不應(yīng)該有任何其他響應(yīng)寫入代碼:no ,不再調(diào)用等。returnif-elsehttp.RedirectExecuteTemplate
func handleAbout(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" {
if data_is_present {
if err := t.ExecuteTemplate(w, "about.html", nil); err != nil {
fmt.Println(err)
}
return
} else if data_is_NOT_present {
if err := t.ExecuteTemplate(w, "aboutform.html", nil); err != nil {
fmt.Println(err)
}
return
}
} else if r.Method == "POST" {
content := r.FormValue("content")
inserted := database.Insertdata("about", content)
if inserted == true {
d := struct{ Aboutdata string }{Aboutdata: content}
if err := t.ExecuteTemplate(w, "about.html", d); err != nil {
fmt.Println(err)
}
return
} else {
fmt.Println("About is not inserted")
return
}
}
}
- 1 回答
- 0 關(guān)注
- 82 瀏覽
添加回答
舉報(bào)