我在golang中有一个模板,我有一个看起来像这样的字符串:
<some_html> {{ .SomeOtherHTML }} </some_html>
我希望输出是这样的:
<some_html> <the_other_html/> </some_html>
但我却看到这样的事情:
<some_html> <the_other_html/< </some_html>
我也试图插入一些JSON,但golang正在逃避角色,并在他们不应该的地方添加"
之类的东西。
如果不发生这种情况,如何在golang中插入HTML模板?
答案 0 :(得分:7)
您应该将变量作为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
传递的变量是。