gpt4 book ai didi

go - 为什么没有渲染模板?

转载 作者:数据小太阳 更新时间:2023-10-29 03:47:20 28 4
gpt4 key购买 nike

我是 Go 的新手,尝试呈现一个 html 表单模板 interface.html与我的 hello.go 位于同一目录中。

hello.go中的相关函数是:

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

var err error
t := template.New("interface") // Create a template.
t, err = t.ParseFiles("interface.html") // Parse template file.
log.Println(t)
t.Execute(w, t)
log.Println("template rendered")
log.Println(err)

}

当我 GET网址,template rendered已登录终端但未呈现模板。

我该如何解决这个问题?

更新:

我添加 log.Println(t) .它打印出 &{<nil> 0xc8200fa0c0 <nil> 0xc8201060a0}而 html 文件显然在那里并且不是空的。还有 log.Println(err)返回 <nil>

最佳答案

好吧,我意识到是什么导致了这个问题:当我定义新模板时,"" 中的名称应该与 ParseFiles 行中的名称相同。

所以正确的做法是:

func UserCreateForm(w http.ResponseWriter, r *http.Request) {
var err error
t := template.New("interface.html") // notice .html is added
t, err = t.ParseFiles("interface.html") // Parse template file.
log.Println(t)
t.Execute(w, t)
log.Println("rendering template")
log.Println(err)
}

更优雅的是,可以在一行中获取模板,例如:

func UserCreateForm(w http.ResponseWriter, r *http.Request) {
t, err := template.ParseFiles("interface.html") // Parse template file.
log.Println(t)
t.Execute(w, t)
log.Println("rendering template")
log.Println(err)

}

关于go - 为什么没有渲染模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34860692/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com