POST要求のエラーを処理し、その上にエラーが表示されたフォームを再描画したいが、エラーを処理する唯一の解決策はhttp.Error )しかし、これはHTMLページではなく、平文応答を返します。 executeTemplate()メソッドを使ってHTMLページをフォームに再レンダリングする方法はありますか?ユーザーを同じページにリダイレクトするはずですか?もしそうなら、そのリダイレクトされたページにエラー情報を渡すにはどうしたらいいですか?POST要求が失敗したときにテンプレートをレンダリングする[golang]
編集:このコードを使用してexecuteTemplateを実行しようとすると、Post要求は200ステータスコード(間違っています)を返し、指定したテンプレートではなく空白のページを再描画します。
func PostSignup(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
if r.Method != http.MethodPost {
http.Error(w, http.StatusText(405), http.StatusMethodNotAllowed)
return
}
usr := users.User{}
usr.Username = r.FormValue("username")
usr.Email = r.FormValue("email")
usr.Hash = r.FormValue("password")
errors := CredErrors{}
errors.Error = "Username cannot be blank"
if usr.Username == "" {
// http.Error(w, "Username cannot be blank.", 400)
tpl.ExecuteTemplate(w, "signup.gothml", errors)
return
}
私のポストハンドラでexecuteTemplate()を使用すると、テンプレートではなく空白のページがレンダリングされます。私は明確にするコードで私の質問を編集しました。 – comebacknader
ExecuteTemplateはエラーを返し、それをチェックしていません。これが私の最初のステップです。テンプレートを実行すると何が起きているのかを見てください。 – Adrian
ああ!それは少しスペルミスでした!私はあなたが言ったことをして、エラーをチェックし、問題を見つけました。あなたロック。ありがとうございました! – comebacknader