当我运行:
t, _ := template.ParseFiles("index.html")
t.Execute(w, nil)
页面加载正常,但当我尝试运行时出现问题。
t := template.New("first")
t, _ = t.ParseFiles("index.html")
t.Execute(w, nil)
唯一加载的是一个空白页面。 我试图在Golang html模板中更改分隔符值,并希望能够更改模板,然后解析文件。
还有其他人遇到这个问题吗?
第一个版本按照你的期望工作,因为包级别的ParseFiles
函数将返回一个新的模板,该模板具有第一个解析文件的名称和内容。
然而在第二种情况中,你创建了一个名为"first"
的模板,然后解析了一个名为"index.html"
的模板。当你在"first"
上调用t.Execute
时,它仍然是空的。
你可以通过以下方式解决问题:
template.New("index.html")
,这样文件名与你下次解析的模板名称相匹配;t.ExecuteTemplate(w, "index.html", nil)
显式地提供你想要执行的模板名称。