package mycanteen import( "net/http" "html/template" "strconv" "fmt" ) // No main function. Go App Engine use the init-func func init() { http.HandleFunc("/", root) http.HandleFunc("/admin", admin); http.HandleFunc("/save", save) } func root(w http.ResponseWriter, r *http.Request) { // Here we will add the Userpanel, but not know } /*********************ADMINPANEL HANDLER**************************/ func admin(w http.ResponseWriter, r *http.Request) { // Execute the parsing. We pass the ResponseWriter and a second value, which should be fill the gaps at the template. // We have no gaps, so we have nothing to fill in. if err := adminPanelTemplate.Execute(w, ""); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } } /********************SAVE/PERSIST HANDLER************************/ func save(w http.ResponseWriter, r *http.Request) { // You have to parse the form from our admin panel. It's mandatory! if err := r.ParseForm(); err != nil { fmt.Fprint(w,err) } // Now we a readey to get the fish ;-) course := r.FormValue("course") name := r.FormValue("name") date := r.FormValue("date") // The form is string based, for later purpose we parse it to float price, _ := strconv.ParseFloat(r.FormValue("price"), 64) // At this moment we cant save the values, hence we setup only this output to check the values. fmt.Fprintf(w, "You \"saved\" successfully: Our first %s %s costs %v %s on %s", course,name,price,string(0x20AC),date) } // Parse the HTMLTemplate, despite it is not neccesary yet. var adminPanelTemplate = template.Must(template.New("adminPanelHTML").Parse(adminPanelHTML)) // Here you define the HTML which will be parsed. const adminPanelHTML= ` <html> <head> </head> <body></body> </html> ` At the beginning we add our libaries strconv(String Converting) & fmt(Formatting).
Setting the new custom handler save, we are able to catch the request. Otherwise the app can't handle it.
Want not to explain the save-Function, because I write self-explaining comments. // Comments are helpful as usual!
Don't forget update the form action value.
That's all for today, stay tuned!
No comments:
Post a Comment