html - 将 HTML 插入到 golang 模板

标签 html json templates go escaping

<分区>

我在 golang 中有一个模板,其中有一个看起来像这样的字符串:

<some_html> {{ .SomeOtherHTML }} </some_html>

我希望输出是这样的:

<some_html> <the_other_html/> </some_html>

但是我看到的是这样的:

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

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

如您所见,我们作为 template.HTML 传递的变量未转义,但作为 string 传递的变量是。

关于html - 将 HTML 插入到 golang 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41931082/

相关文章:

c++ - 在与父类具有相同类型的类中声明模板类

jquery - 单击菜单项按钮然后在网页上的不同位置进行图像交换

javascript - 单击内部按钮或 div 本身时显示更多 div 内容文本

c++ - 仅当模板参数中存在 typedef 时才创建 typedef

java - 如何将POST中的json转换为javaBean

java - 将部分字符串转换为 java.util.Date

c++ - 编译器是否足够聪明,可以优化具有与静态方法参数相同的成员的仿函数?

html - 对于经常性捐款,PayPal 给出错误 "Things don' t 似乎目前正在工作。请稍后再试。”

html - 使用rvest或httr登录网页上的非标准表单

Python JSON 字符串(包含十六进制)转十六进制