Golang tmpl HTML 文本被解释为纯文本而不是使用 HTML

标签 go

我使用包含 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:

html is rendered as plain text

我怎样才能得到 {{ $value }}将文本解释为 HTML?

这是它在 JS 控制台中的样子:

js console

我知道这类似于这个问题: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/

相关文章:

go - 如何使用 Angular2 访问请求 header ?

golang 如何将 []byte key vaules 与其他变量连接起来

json - 如何在 Golang 中解析 JSON 字符串?

google-app-engine - 使用 App Engine VM 时总是得到 "502 Bad gateway"

go - 如何在 Go 中打印 "enum"的字符串表示形式?

amazon-web-services - 用于 go 的 Elastic Beanstalk Procfile

golang 保存文件到桌面

mysql - 我需要一些帮助来获得正确的连接字符串以将 Golang 连接到 AWS RDS

go - 如何检查 golang 二进制文件是否使用 --ldflags ="-s -w"编译

go - 在 golang 的 map 中使用 string[][] 时复合文字中缺少类型