我正在使用 Martini、Martini-Contrib Renderer 包和 Blackfriday 在 Golang 中编写一个简单的博客。
我能够毫无问题地将帖子放入数据库并从数据库中取出。我什至将帖子的正文从数据库中取出并作为 html 放入我的结构中,但是当我们渲染模板时,输出只是纯文本 html,看起来并不像它应该的那样。
代码托管在这里:
http://bitbucket.org/ChasingLogic/goblog
任何帮助都会很棒。
编辑:
你可以在这里看到它在做什么:
我正在使用 Martini、Martini-Contrib Renderer 包和 Blackfriday 在 Golang 中编写一个简单的博客。
我能够毫无问题地将帖子放入数据库并从数据库中取出。我什至将帖子的正文从数据库中取出并作为 html 放入我的结构中,但是当我们渲染模板时,输出只是纯文本 html,看起来并不像它应该的那样。
代码托管在这里:
http://bitbucket.org/ChasingLogic/goblog
任何帮助都会很棒。
编辑:
你可以在这里看到它在做什么:
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)))