Golang - 不要在HTML模板中转义

Arx*_*iss 9 template-engine go go-html-template

尝试呈现HTML模板,以便通过带有嵌入式附件的电子邮件发送cid:.问题是,Go确实逃避了,我无能为力.

tplVars := map[string]interface{}{
    "Dog": "cid:dog.png",
    "Cat": "cid:cat.png",
}
Run Code Online (Sandbox Code Playgroud)

我的测试模板看起来不像这样:

Dog: <img src="{{.Dog}}">
Cat: {{.Cat}}
Run Code Online (Sandbox Code Playgroud)

输出是:

Dog: <img src="#ZgotmplZ">
Cat: cid:cat.png
Run Code Online (Sandbox Code Playgroud)

如果text在属性上下文之外,则会对其进行正确计算,但是当它是一个src属性时,它总是成为该错误字符串.我也尝试过更改值string,template.HTMLAttr但没有任何反应.始终将Cid值评估为该错误输出#ZgotmplZ.

dav*_*ave 15

问题是该src属性不是严格地作为属性处理,而是作为URL处理.如果你把它从a string改为a template.URL就可以了.

tplVars := map[string]interface{}{
    "Dog": template.URL("cid:dog.png"),
    "Cat": "cid:cat.png",
}
Run Code Online (Sandbox Code Playgroud)

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