使用golang标准库中的html/template
时,在默认情况下渲染模版时为了安全等原因,会将字符串中的部分符号进行转义。
- 注册自定义转义处理函数
1func unescapeHTML(s string) template.HTML {
2 return template.HTML(s)
3}
在定义转义处理函数后,我们需要使用Funcs()
将其注册到模版中。需要注意,注册自定义函数需要在调用Parse()
前进行。在注册时我们需要定义一个函数标识符,并在模版文本中使用。在下面例子中我们使用了名为unescapeHTML
的函数标识符。
1t, err := template.New("wg_config").Funcs(template.FuncMap{
2 "unescapeHTML": unescapeHTML,
3 }).Parse(tmplWireguardConf)
4...
5
6 config := map[string]interface{}{
7 "now": now,
8 "wireGuardServer": l.svcCtx.Config.WireGuardServer,
9 "clientDataList": nil, // todo 传[]Client
10 }
11
12 err = t.Execute(f, config)
- 另外在模版文本内容中,对于需要避免转义的部分需要使用上面定义的函数。
1PrivateKey = {{ unescapeHTML .wireGuardServer.PrivateKey }}
参考资料: