例:
1) テンプレート メソッドを使用してログイン ページをレンダリングします。例: これは index.html です
{{ define "title" }}Guestbook{{ end }}
{{ define "content" }}
<form action="/login" method="post">
<div><label>UserName : </label><input name="username" type="text" /></div>
<div><label>Password : </label><input name="password" type="password" /></div>
<div><input type="submit" value="login"></div>
</form>
{{ end }}
2) hello.go ファイル:
package main
import (
"fmt"
"html/template"
"net/http"
)
var index = template.Must(template.ParseFiles(
"templates/base.html",
"templates/index.html",
))
//UserLogin struct is created
type UserLogin struct{
UserName string
PassWord string
}
func handler(w http.ResponseWriter, r *http.Request) {
index.Execute(w, nil)
}
func login(w http.ResponseWriter, r *http.Request) {
remPartOfURL := r.URL.Path[len("/login/"):]
if r.Method == "POST" {
http.Error(w, fmt.Sprintf("First Name: %s", r.FormValue("username")), http.StatusOK)
http.Error(w, fmt.Sprintf("Password: %s", r.FormValue("password")), http.StatusOK)
}
}
func init() {
http.HandleFunc("/", handler)
http.HandleFunc("/login/", login)
}
この login() の例: r.FormValue("username") と r.FormValue("password") を出力できますが、データストアに「入れる」方法とデータストアから「取得する」方法です。