我已经写了一小段代码
func loginHandler(w http.ResponseWriter, r *http.Request) {
log.Println("loginHandler")
log.Println("request url is", r.RequestURI)
log.Println("request method", r.Method)
requestbody, _ := ioutil.ReadAll(r.Body)
log.Println("request body is", string(requestbody))
if r.Method == "POST" {
us, err := globalSessions.SessionStart(w, r)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
us.Set("LoggedInUserID", "000000")
w.Header().Set("Location", "/auth")
w.WriteHeader(http.StatusFound)
return
}
outputHTML(w, r, "static/login.html")
}
func outputHTML(w http.ResponseWriter, req *http.Request, filename string) {
log.Println("outputHTML")
requestbody, _ := ioutil.ReadAll(req.Body)
log.Println("request body is", string(requestbody))
log.Println("request body is", requestbody)
file, err := os.Open(filename)
if err != nil {
http.Error(w, err.Error(), 500)
return
}
defer file.Close()
fi, _ := file.Stat()
http.ServeContent(w, req, file.Name(), fi.ModTime(), file)
}

在此代码中,我将重定向到login.html。现在我想发送一个变量让它成为一个名为testvariable的字符串,它的值为login.html。
答案 0 :(得分:0)
为了能够在html中显示值,您可以使用Go的html/template
包。
首先,您需要使用html/template
包来指定html页面中您希望显示值的位置。
"操作" - 数据评估或控制结构 - 由以下分隔 " {{"和"}}"
接下来,您需要删除http.ServeContent
函数,因为它不知道如何呈现模板,而是可以使用template actions来显示登录页面以及您的值。
以下是一个例子:
<强>的login.html 强>:
<html>
<body>
<h1>{{.MyVar}}</h1>
</body>
</html>
<强> outputHTML 强>:
func outputHTML(w http.ResponseWriter, filename string, data interface{}) {
t, err := template.ParseFiles(filename)
if err != nil {
http.Error(w, err.Error(), 500)
return
}
if err := t.Execute(w, data); err != nil {
http.Error(w, err.Error(), 500)
return
}
}
您的 loginHandler :
func loginHandler(w http.ResponseWriter, r *http.Request) {
// do whatever you need to do
myvar := map[string]interface{}{"MyVar": "Foo Bar Baz"}
outputHTML(w, "static/login.html", myvar)
}
在此处详细了解模板:Execute以及有关如何自行编写模板的信息,请参阅html/template的文档