2017-01-30 2 views
0

У меня есть шаблон в golang, где у меня есть строка, которая выглядит примерно так:Вставка HTML для golang шаблон

<some_html> {{ .SomeOtherHTML }} </some_html> 

Я ожидаю, что выход будет что-то вроде этого:

<some_html> <the_other_html/> </some_html> 

но вместо этого я вижу что-то вроде этого:

<some_html> &lt;the_other_html/&lt; </some_html> 

Я также пытаюсь вставить некоторые JSON, но golang является спасаясь ча racters и добавления таких вещей, как ", в местах, где их не должно быть.

Как вставить шаблон HTML в golang без этого?

ответ

3

Вы должны передать переменную как template.HTML, а не как string:

tpl := template.Must(template.New("main").Parse(`{{define "T"}}{{.Html}}{{.String}}{{end}}`)) 
tplVars := map[string]interface{} { 
    "Html": template.HTML("<p>Paragraph</p>"), 
    "String": "<p>Paragraph</p>", 
} 
tpl.ExecuteTemplate(os.Stdout, "T", tplVars) 

//OUTPUT: <p>Paragraph</p>&lt;p&gt;Paragraph&lt;/p&gt; 

https://play.golang.org/p/QKKpQJ7gIs

Как вы можете видеть, переменная, которую мы прошли как template.HTML не убежали, а один прошел как string есть.

+0

это сработало спасибо! – 1N5818

Смежные вопросы