我想在我的 golang 控制器之一中指定一个 html 模板
我的目录结构是这样的
Project
-com
-src
- controller
-contoller.go
-view
- html
-first.html
我想为请求 /new 加载first.html。我已将 NewHandler 用于 url /new ,当 /new 请求到来并位于controller.go 中时,NewHandler 函数正在执行。这是我的代码
func NewHandler(w http.ResponseWriter, r *http.Request) {
t, err := template.ParseFiles("view/html/first.html")
if err == nil {
log.Println("Template parsed successfully....")
}
err := templates.ExecuteTemplate(w, "view/html/first.html", nil)
if err != nil {
log.Println("Not Found template")
}
// t.Execute(w, "")
}
但我收到错误
panic: open first.html: no such file or directory
请帮我消除这个错误。提前致谢
我已经通过给出html的绝对路径解决了这个问题。为此,我创建了一个类,在其中解析 html
package htmltemplates
import (
"html/template"
"path/filepath"
)
在 NewHandler 方法中我删除了
//Templates用来存放所有的Template
var 模板 *template.Template
func init() {
filePrefix, _ := filepath.Abs("./work/src/Project/view/html/") // path from the working directory
Templates = template.Must(template.ParseFiles(filePrefix + "/first.html"))
...
//htmls must be specified here to parse it
}
在 NewHandler 中,我删除了前 5 行,而是给出了
err := htmltemplates.Templates.ExecuteTemplate(w, "first.html", nil)
它现在正在工作。但需要更好的解决方案(如果有)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)