Шаблоны Golang Martini просто показывают HTML при рендеринге уценки
Я работаю над написанием простого блога на Голанге с использованием Martini, пакета Martini-Contrib Renderer и Blackfriday.
Я могу получить пост в БД и из БД без проблем. Я даже получаю тело поста из БД и в свою структуру как html, однако, когда мы визуализируем шаблон, результат будет просто текстовым html и выглядит не так, как должен.
Код размещен здесь:
http://bitbucket.org/ChasingLogic/goblog
Любая помощь будет отличной.
РЕДАКТИРОВАТЬ:
Вы можете увидеть, что он делает здесь:
1 ответ
Шаблоны Golang по умолчанию экранируют переменные. Ты можешь использовать template.HTML
вместо string
когда он содержит HTML и источник является доверенным (что, в данном случае, кажется).
http://golang.org/pkg/html/template/
введите строку HTML
HTML инкапсулирует известный безопасный фрагмент HTML-документа. Он не должен использоваться для HTML от сторонних производителей или HTML с закрытыми тегами или комментариями. Выводы звукового HTML-дезинфицирующего средства и шаблона, экранированного этим пакетом, хороши для использования с 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)))