我在 golang 中有一个模板,其中有一个看起来像这样的字符串:
<some_html> {{ .SomeOtherHTML }} </some_html>
我希望输出是这样的:
<some_html> <the_other_html/> </some_html>
但是我看到的是这样的:
<some_html> <the_other_html/< </some_html>
我也在尝试插入一些 JSON,但 golang 正在转义字符并在不应该出现的地方添加诸如 "
之类的内容。
如何在不发生这种情况的情况下插入 golang 中的 HTML 模板?
您应该将变量作为 template.HTML
而不是作为 string
传递:
tpl := template.Must(template.New("main").Parse(`{{define "T"}}{{.Html}}{{.String}}{{end}}`))
tplVars := map[string]interface{} {
"Html": template.HTML("<p>Paragraph</p>"),
"String": "<p>Paragraph</p>",
}
tpl.ExecuteTemplate(os.Stdout, "T", tplVars)
//OUTPUT: <p>Paragraph</p><p>Paragraph</p>
https://play.golang.org/p/QKKpQJ7gIs
如您所见,我们作为 template.HTML
传递的变量未转义,但作为 string
传递的变量是。