我想在我的一个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方法中,我删除了//模板用于存储所有模板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)
它现在正在工作。但是,如果有的话,需要一个更好的解决方案