I have a template in golang where I have a string that looks something like this:
<some_html> {{ .SomeOtherHTML }} </some_html>
I'm expecting an output to be something like this:
<some_html> <the_other_html/> </some_html>
But instead I'm seeing something like this:
<some_html> <the_other_html/< </some_html>
I'm also trying to insert some JSON but golang is escaping characters and adding things like "
in places they shouldn't be.
How do I insert into an HTML template in golang without this happening?
You should pass the variable as a template.HTML
and not as a 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
As you can see, the variable we passed as a template.HTML
is not escaped, but the one passed as a string
is.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With