2014-11-04 2 views
0

Я работаю над написанием простого блога в Голанге, используя Martini, пакет Martini-Contrib Renderer и Blackfriday.Шаблоны Golang Martini только показывают HTML при рендеринге Markdown

Я могу получить сообщение в БД и из БД без проблем. Я даже получаю Тело сообщения из БД и в свою структуру как html, однако, когда мы создаем шаблон, вывод является просто текстовым html и не выглядит так, как должен.

Код размещен здесь:

http://bitbucket.org/ChasingLogic/goblog

Любая помощь будет большим.

EDIT:

Вы можете увидеть, что он здесь делает:

http://chasinglogic.com/

ответ

2

Golang шаблоны избежать переменных по умолчанию. Вы можете использовать template.HTML вместо string, когда он содержит HTML и источник доверен (что, в данном случае, похоже).

http://golang.org/pkg/html/template/#HTML

типа 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)))