如何将变量(不是结构成员)传递到 text/html 模板。戈朗
How to pass just a variable (not a struct member) into text/html template. Golang
有什么方法可以只将一个变量(字符串、整数、布尔值)传递到模板中。例如(类似的东西):
import (
"html/template"
)
func main() {
....
tmpl := template.Must(template.ParseFiles("templates/index.html"))
mux.HandleFunc("/", func(rw http.ResponseWriter, req *http.Request) {
varmap := map[string]interface{}{
"var1": "value",
"var2": 100,
}
tmpl.ExecuteTemplate(rw, "index", varmap)
})
// content of index.html
{{define "index"}}
{{var1}} is equal to {{var2}}
{{end}}
}
可以只传递任何类型的简单值。如果这样做,您可以在模板中将其引用为 {{.}}
.
这里有一个例子(在Go Playgound上试试):
s := "<html><body>Value passed: {{.}}</body></html>\n"
tmpl := template.Must(template.New("test").Parse(s))
tmpl.Execute(os.Stdout, false)
tmpl.Execute(os.Stdout, 1)
tmpl.Execute(os.Stdout, "me")
输出:
<html><body>Value passed: false</body></html>
<html><body>Value passed: 1</body></html>
<html><body>Value passed: me</body></html>
是的,只需使用它前面的点:
http://play.golang.org/p/7NXu9SDiik
package main
import (
"html/template"
"log"
"os"
)
var tmplString = ` // content of index.html
{{define "index"}}
{{.var1}} is equal to {{.var2}}
{{end}}
`
func main() {
tmpl, err := template.New("test").Parse(tmplString)
if err != nil {
log.Fatal(err)
}
varmap := map[string]interface{}{
"var1": "value",
"var2": 100,
}
tmpl.ExecuteTemplate(os.Stdout, "index", varmap)
}
试试 fasttemplate [1]。它接受占位符替换值的映射。而且它在简单模板上的运行速度比 html/template 快。
有什么方法可以只将一个变量(字符串、整数、布尔值)传递到模板中。例如(类似的东西):
import (
"html/template"
)
func main() {
....
tmpl := template.Must(template.ParseFiles("templates/index.html"))
mux.HandleFunc("/", func(rw http.ResponseWriter, req *http.Request) {
varmap := map[string]interface{}{
"var1": "value",
"var2": 100,
}
tmpl.ExecuteTemplate(rw, "index", varmap)
})
// content of index.html
{{define "index"}}
{{var1}} is equal to {{var2}}
{{end}}
}
可以只传递任何类型的简单值。如果这样做,您可以在模板中将其引用为 {{.}}
.
这里有一个例子(在Go Playgound上试试):
s := "<html><body>Value passed: {{.}}</body></html>\n"
tmpl := template.Must(template.New("test").Parse(s))
tmpl.Execute(os.Stdout, false)
tmpl.Execute(os.Stdout, 1)
tmpl.Execute(os.Stdout, "me")
输出:
<html><body>Value passed: false</body></html>
<html><body>Value passed: 1</body></html>
<html><body>Value passed: me</body></html>
是的,只需使用它前面的点:
http://play.golang.org/p/7NXu9SDiik
package main
import (
"html/template"
"log"
"os"
)
var tmplString = ` // content of index.html
{{define "index"}}
{{.var1}} is equal to {{.var2}}
{{end}}
`
func main() {
tmpl, err := template.New("test").Parse(tmplString)
if err != nil {
log.Fatal(err)
}
varmap := map[string]interface{}{
"var1": "value",
"var2": 100,
}
tmpl.ExecuteTemplate(os.Stdout, "index", varmap)
}
试试 fasttemplate [1]。它接受占位符替换值的映射。而且它在简单模板上的运行速度比 html/template 快。