【发布时间】:2022-01-21 01:29:16
【问题描述】:
我要执行的 signup.html 文件中有两个表单。
- 第一个表单重定向到
/login,但不将数据插入数据库。 - 第二个表单既不插入数据也不重定向到注册页面。
如果我将两个action 都设置为相同的链接,那么它会将数据插入到数据库中。如何执行多个POST 请求并重定向到多个页面
单一功能?
谢谢!
controllers.go
func Signup(w http.ResponseWriter, r *http.Request) error {
if r.Method == "GET" {
return SignupTmpl.Execute(w, nil)
} else if r.Method == "POST" && http.MethodPost == "Register" {
register := models.RegisterUser{
Name: r.FormValue("name"),
Email: r.FormValue("email"),
Password: r.FormValue("password"),
}
values := [3]string{register.Name, register.Email, register.Password}
database.InsertRegister(values)
return LoginTmpl.Execute(w, nil)
} else if r.Method == "POST" && http.MethodPost == "Newsletter" {
Newsletter(w, r)
return SignupTmpl.Execute(w, nil)
}
return nil
}
signup.html
// Signup form
<form class="form" method="post" action="/login">
...
<input type="submit" value="Register">
</form>
// Newsletter form
<form class="newsletter" method="post" action="/signup">
...
<input type="submit" value="Newsletter">
</form>
【问题讨论】:
-
我认为您的部分问题可能是 http.MethodPost 使用不当(根据pkg.go.dev/net/http,它是一个始终等于“POST”的常量)。您可能希望使用 r.ParseForm() 解析表单数据,这将允许您访问表单数据,如下所示:“r.Form["username"]”(参见astaxie.gitbooks.io/build-web-application-with-golang/content/…)。
-
谢谢@Siege。丹尼尔用一个例子来解释它。
标签: http go if-statement post