我一直在網上淘,並不能找到太多的所有關於張貼到HTML模板和形式golang爲模板。這是我在這傳遞一個字符串在golang
我的錯誤 不能在參數中使用「HTML /模板」 .HTML(「 登錄」)(類型爲‘HTML /模板’.HTML)類型的字符串爲「HTML /模板嘗試 」。新的( 「富」)。解析
我想在HTML文件中傳值{{.ErrorMessage}}
我的HTML(login.html的)
{{ define "content"}}
<h2> {{.ErrorMessage}}</h2>
form action="/login" method="POST">
Username:input type="username" name="username">
Password:input type="password" name="password">
input type="submit" value="Submit">
/form>
{{end}}
{{define "extra_head"}} <title>Title</title>{{end}}
{{define "nav"}}{{end}}
{{define "extra_footer"}}<footer>[email protected]</footer>{{end}}
{{template "_layout.html" .}}
MAIN.G0
package main
import (
"net/http"
"ere.com/handlers"
)
func main() {
http.HandleFunc("/register", handlers.RegisterHandler) // setting router rule
http.HandleFunc("/sucess", handlers.RegisterSucessHandler)
http.HandleFunc("/login", handlers.LoginHandler)
http.HandleFunc("/update", handlers.UpdateHandler)
http.HandleFunc("/logout", handlers.LogoutHandler)
http.HandleFunc("/header", handlers.HeaderHandler)
if err := http.ListenAndServe(":8181", nil); err != nil {
//log.Fatal("http.ListenAndServe: ", err)
}
}
處理程序INT
package handlers
import (
"html/template"
)
func GetTemplate(name string) *template.Template{
tmpl := template.Must(template.ParseFiles(
"frontend/templates/_layout.html",
"frontend/templates/" + name + ".html",
))
return tmpl
}
LoginHandler
type viewModel struct {
Id bson.ObjectId
Email string
Password string
FirstName string
LastName string
ErrorMessage string
}
func LoginHandler (response http.ResponseWriter, request *http.Request) {
viewModel:=viewmodels.RegisterViewModel{}
if (request.Method == "POST") {
request.ParseForm()
user := models.User{}
user.Email = request.Form.Get("username")
user.Password = request.Form.Get("password")
boolUser, userID := user.FindUserDB()
if (boolUser != true) {
viewModel.ErrorMessage = "incorrect username or password"
//need help here
t, err := template.New("foo").Parse(template.HTML("login"))
err = t.ExecuteTemplate(response, "T", viewModel)
err := GetTemplate("login").Execute(response, nil,)
if err != nil {
panic(err)
}
}else {
setSession(userID, response)
http.Redirect(response, request, "/update", 302)
}
}else {
err := GetTemplate("login").Execute(response, nil,)
if err != nil {
panic(err)
}
}
得到了答案。 ERR:=是getTemplate( 「登錄」)。執行(response,viewModel) –