Html 为什么';我的模板不能在浏览器中渲染吗?
我想将模板渲染到浏览器。然而,什么也没有出现。 这是我正在运行的代码,main.go:Html 为什么';我的模板不能在浏览器中渲染吗?,html,go,Html,Go,我想将模板渲染到浏览器。然而,什么也没有出现。 这是我正在运行的代码,main.go: package main import ( "html/template" "net/http" "log" ) func main() { mux := http.NewServeMux() mux.HandleFunc("/", home) log.Fatal(http.L
package main
import (
"html/template"
"net/http"
"log"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", home)
log.Fatal(http.ListenAndServe("0.0.0.0:8000", mux))
}
func home(w http.ResponseWriter, r *http.Request) {
data := pageData{"MyTabTitle", "MyPageName"}
tmpl := template.Must(template.ParseFiles("base.html"))
tmpl.Execute(w, data)
}
type pageData struct {
tabTitle, pageName string
}
在同一个目录中,我还有base.html-文件
{{.tabTitle}}
{{.pageName}
页面数据字段未导出,因此模板引擎无法访问它们。将字段名和对模板中字段名的引用大写。另外,不要忽略模板执行错误。您正在忽略错误。不要那样做。这个错误会告诉你问题出在哪里。还有一个术语说明:模板根本不会在浏览器中呈现。它在服务器上呈现,然后发送到浏览器。如果你想在浏览器中呈现,你必须使用客户端代码,可能是用JavaScript编写的。谢谢你的回答。当你说我忽略错误时,你是指html/template.template.Must吗?@KentMartin从tmpl.Execute(w,data)
返回的错误被忽略了。它也很有可能找不到模板——编译过程中的本地目录与执行过程中的本地目录无关。很好的捕获,@Flimzy。net/http
的编写方式,使得http处理程序中的所有恐慌都被捕获并记录下来;因此,它们应该出现在程序的标准错误流中。由于恐慌被捕获并记录下来,程序不会崩溃,即使template.Must
可能会崩溃。谢谢你们的输入。我已将pageData中的字段大写,但在浏览器中仍然看不到任何内容。我是新手,不知道自己在做什么,但我知道接下来应该研究错误处理。检查tmpl.Execute()返回的错误后,我发现我忘记关闭base.html中的
-标记。现在一切正常。再次感谢你的帮助。