Golang 模板默认转义变量。当它包含 HTML 并且来源是可信的(在这种情况下,它似乎是)时,您可以使用template.HTML
而不是。string
http://golang.org/pkg/html/template/#HTML
输入 HTML 字符串
HTML 封装了一个已知的安全 HTML 文档片段。它不应用于来自第三方的 HTML,或带有未封闭标签或注释的 HTML。一个健全的 HTML sanitizer 的输出和一个被这个包转义的模板可以很好地与 HTML 一起使用。
我解决它的方法是改变它
type Post struct {
Title string
Body string
Author string
Date string
}
至
type Post struct {
Title string
Body template.HTML
Author string
Date string
}
然后改变
post.Body = string(blackfriday.MarkdownCommon([]byte(preFormatMarkdown)))
至
post.Body = template.HTML(blackfriday.MarkdownCommon([]byte(preFormatMarkdown)))