插入HTML到golang模板 [英] Inserting HTML to golang template

查看:198
本文介绍了插入HTML到golang模板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



 < some_html>我在golang中有一个模板,其中有一个字符串,如下所示: {{.SomeOtherHTML}}< / some_html> 

我期望的输出是这样的:

 < some_html> < the_other_html /> < / some_html> 

但我却看到类似这样的内容:

 < some_html> &安培; LT; the_other_html /&安培; LT; < / some_html> 

我也尝试插入一些JSON,但golang正在转义字符并添加诸如<$ c

如何在golang中插入HTML模板而不发生这种情况?

p>

解决方案

您应该将变量作为 template.HTML 传递,而不是 string

  tpl:= template.Must(template.New main)。Parse(`{{defineT}} {{。Html}} {{。String}} {{end}}`))
tplVars:= map [string] interface {} {
Html:template.HTML(< p>段落< / p>),
字符串:< p>段落< / p>,
}
tpl.ExecuteTemplate(os.Stdout,T,tplVars)

// OUTPUT:< p>段落< / p>& lt; p& gt;段落&

https://play.golang.org/p/QKKpQJ7gIs



正如您所看到的,我们作为 template.HTML 传递的变量不会被转义,而是作为字符串传递的变量是。


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> &lt;the_other_html/&lt; </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>&lt;p&gt;Paragraph&lt;/p&gt;

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 stringis.

这篇关于插入HTML到golang模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆