10

当我运行时:

t, _ := template.ParseFiles("index.html")
t.Execute(w, nil)

页面加载正常。但是当我尝试跑步时

t := template.New("first")
t, _ = t.ParseFiles("index.html")
t.Execute(w, nil)

唯一加载的是空白页。我正在尝试更改 Golang html 模板中的分隔符值,并希望制作模板,更改分隔符值,然后解析文件。

还有其他人有这个问题吗?

4

1 回答 1

18

第一个版本按预期工作,因为包级ParseFiles函数将返回一个新模板,其中包含第一个解析文件的名称和内容。

但是,在第二种情况下,您正在创建一个名为的模板"first",然后用 name 解析一个模板"index.html"。当你打电话t.Execute"first",它仍然是空的。

您可以通过以下任一方式解决问题:

  1. 使用template.New("index.html"), 使文件名与你接下来解析的模板名匹配;
  2. 提供要显式执行的模板名称t.ExecuteTemplate(w, "index.html", nil)
于 2013-08-26T04:50:47.120 回答