首页 > 后端开发 > Golang > 如何在Go模板中插入HTML而不转义?

如何在Go模板中插入HTML而不转义?

Linda Hamilton
发布: 2024-10-30 04:38:28
原创
987 人浏览过

How Can I Insert HTML into Go Templates Without Escaping?

将 HTML 插入 Go 模板

使用 Go 模板时,重要的是要考虑如何插入 HTML 内容以避免意外行为。例如,插入包含 HTML 代码的字符串可能会导致不需要的字符转义,从而导致不正确的输出。

要在 Go 模板中正确处理 HTML 插入,请遵循以下准则:

通过HTML 作为 template.HTML:

不要直接传递字符串,而是将 HTML 内容包装在 template.HTML 类型中。这告诉模板引擎将内容视为原始 HTML,防止其转义字符。

示例:

<code class="go">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>&amp;lt;p&amp;gt;Paragraph&amp;lt;/p&amp;gt;</code>
登录后复制

避免传递字符串:

将 HTML 内容作为字符串传递可能会导致不必要的转义。例如:

<code class="go">tpl := template.Must(template.New("main").Parse(`{{define "T"}}{{.Html}}<p>{{.String}}</p>{{end}}`))
tplVars := map[string]interface{} {
    "Html": "<p>Paragraph</p>",
    "String": "<p>Paragraph</p>",
}
tpl.ExecuteTemplate(os.Stdout, "T", tplVars)

//OUTPUT: <p>Paragraph</p>&amp;lt;p&amp;gt;Paragraph&amp;lt;/p&amp;gt;</code>
登录后复制

JSON 数据:

如果您将 JSON 数据插入到模板中,则可以使用像encoding/json 这样的库对其进行编码作为字符串。然后,您可以将编码后的字符串传递给模板并使用 json 模板函数在模板中对其进行解码。

以上是如何在Go模板中插入HTML而不转义?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板