【问题标题】:How to not escape in HTML templates如何在 HTML 模板中不转义
【发布时间】:2016-04-29 07:06:58
【问题描述】:

尝试呈现 HTML 模板,以便通过电子邮件发送带有 cid: 的嵌入式附件。问题是,Go 确实逃跑了,我什么也做不了。

tplVars := map[string]interface{}{
    "Dog": "cid:dog.png",
    "Cat": "cid:cat.png",
}

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

Dog: <img src="{{.Dog}}">
Cat: {{.Cat}}

输出是:

Dog: <img src="#ZgotmplZ">
Cat: cid:cat.png

如果文本在属性上下文之外,它会被正确评估,但当它是src 属性时,它总是会变成那个错误字符串。我也尝试将值从string 更改为template.HTMLAttr,但没有任何反应。 Cid 值始终评估为该错误输出 #ZgotmplZ

【问题讨论】:

标签: go template-engine go-html-template


【解决方案1】:

问题在于src 属性并未严格视为属性,而是视为 URL。如果您将其从 string 更改为 template.URL,它就可以正常工作。

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

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

【讨论】:

  • 非常感谢.. 我完全失明了。我尝试了所有可能的类型,如 HTML、HTMLAttr,甚至 CSS 等。但我没有看到 URL 类型和索引的结尾。谢谢
  • Arrrgh 这应该在文档某处上。我失去了试图自己弄清楚的时间!!不过,感谢您发布答案。它真的很有帮助(即使在 6 年后!)
猜你喜欢
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 2012-03-02
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 2011-03-09
相关资源
最近更新 更多