如何将变量及其值发送到html

时间:2017-04-18 13:04:50

标签: html http go

我已经写了一小段代码

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。

1 个答案:

答案 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的文档