代码之家  ›  专栏  ›  技术社区  ›  Katie

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

go
  •  -1
  • Katie  · 技术社区  · 8 年前

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

    以纯文本而不是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(它只是逐字显示)。

    2 回复  |  直到 8 年前
        1
  •  3
  •   whitespace    8 年前
    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

        2
  •  0
  •   Katie    8 年前

    我最终要做的就是操纵我正在显示的数据。而不是使用 map[string]string 对于 SimRpms map[string][]string 这样我就可以遍历字符串片段并插入 <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">
                {{ range $keytwo, $valuetwo := $value }}
                    {{ $valuetwo }}<br>
                {{ end }}
              </div>
            </div>
        </div>
    {{ end }}