猿问

浏览器不解释 html 模板

我在一个非常小的 Go 应用程序中有一个函数,它对数据库进行查询,检索一些数据并将其插入模板 (main.html)。数据被插入到模板中(见图片),但是浏览器(Chrome 和 Firefox)没有解释 html

我的浏览器在其他方面工作正常。我对模板有什么不正确的地方吗?


func Root(w http.ResponseWriter, r *http.Request) {


    t := template.Must(template.New("main").ParseFiles("main.html"))

    rows, err := db.Query("SELECT title, author, description FROM books")

    PanicIf(err)

    defer rows.Close()


    books := []Book{}


    for rows.Next() {

        b := Book{}

        err := rows.Scan(&b.Title, &b.Author, &b.Description)

        PanicIf(err)

        books = append(books, b)

    }

    t.ExecuteTemplate(w, "main.html", books)


}

主文件


<html>

  <head>

    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css">

  </head>



  <body>


    <div class="container">

     <table class="table">

  <tr>

    <th>Title</th>

    <th>Author</th>

    <th>Description</th>

  </tr>

{{ range . }}

  <tr>

    <td>{{.Title}}</td>

    <td>{{.Author}}</td>

    <td>{{.Description}}</td>

  </tr>

{{ end }}

</table>

    </div>

  </body>



</html>


呼如林
浏览 234回答 2
2回答

回首忆惘然

您需要设置内容类型,虽然它没有自动为您设置它很奇怪。w.Header().Set("Content-Type", "text/html; charset=utf-8")t.ExecuteTemplate(w, "main.html", books)//编辑同样为了正确起见,您应该添加<!DOCTYPE html>到模板的顶部,但与问题无关。

慕斯709654

很可能您正在做import "text/template"并且应该做import "html/template",但另一个答案也会为您解决。
随时随地看视频慕课网APP

相关分类

Go
我要回答