0

我正在使用 Martini、Martini-Contrib Renderer 包和 Blackfriday 在 Golang 中编写一个简单的博客。

我能够毫无问题地将帖子放入数据库并从数据库中取出。我什至将帖子的正文从数据库中取出并作为 html 放入我的结构中,但是当我们渲染模板时,输出只是纯文本 html,看起来并不像它应该的那样。

代码托管在这里:

http://bitbucket.org/ChasingLogic/goblog

任何帮助都会很棒。

编辑:

你可以在这里看到它在做什么:

http://chasinglogic.com/

4

1 回答 1

2

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)))
于 2014-11-04T05:28:48.073 回答