我使用包含 html 标签的 Go 为我的模板提供了一些数据。当我尝试显示此数据时,它会按字面意思显示全文,包括 HTML 标记。这是代码:
在我的 .tmpl
,我正在遍历一个名为 .SimRpms
的对象谁的{{ $value }}
里面有 html,比如 <br>
:
{{ range $key, $value := .SimRpms }}
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">{{ $key }}</div>
<div class="panel-body">{{ $value }}</div>
</div>
</div>
{{ end }}
但是,当我查看呈现的页面时,{{ $value }}
呈现为纯文本而不是 html:
我怎样才能得到 {{ $value }}
将文本解释为 HTML?
这是它在 JS 控制台中的样子:
我知道这类似于这个问题:Golang html output is being interpreted as plain text instead of being received as html然而页面的其余部分显示 HTML ok,并且已经设置了整个页面的内容类型,但是这个小面板没有显示 HTML(它按字面意思显示)。
最佳答案
package main
import (
"html/template"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", SayHello)
log.Fatal(http.ListenAndServe(":2332", nil))
}
func SayHello(w http.ResponseWriter, r *http.Request) {
t, err := template.ParseGlob("hello.gtml")
if err != nil {
panic(err)
}
t.Execute(w, map[string]template.HTML{"name": template.HTML("<a>Katie Sissons</a>")})
return
}
使用模板
hello.gtml
下面。
<html>
<head></head>
<body>{{ .name }}</body>
</html>
html/template
包将 template.HTML
视为一种类型并将转义应用于普通字符串。如果您希望您的字符串不转义,这种类型可以为您做到这一点。
关于Golang tmpl HTML 文本被解释为纯文本而不是使用 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51886540/