我有一个简单的main.go脚本,该脚本从文件夹加载模板。模板如下:
<html>
<head>
<title>T2 template</title>
</head>
<body>
hello
</body>
</html>
main.go脚本的外观为:
package main
import (
"fmt"
"html/template"
"log"
"net/http"
"os"
"github.com/gorilla/mux"
)
var (
templates = template.Must(template.ParseFiles("templates/index.html"))
)
func main() {
port := os.Getenv("PORT")
fmt.Printf("port is: %v\n", port)
r := mux.NewRouter()
r.HandleFunc("/hello", HomeHandler)
log.Fatal(http.ListenAndServe(":"+port, r))
}
func HomeHandler(w http.ResponseWriter, r *http.Request) {
tmpl := "templates/index.html"
err := templates.ExecuteTemplate(w, tmpl, "")
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
我不确定这是怎么回事。
我在浏览器中看到的错误是:
“ templates / index.html”未定义
答案 0 :(得分:2)
ParseFiles文档说:
返回的模板名称将具有第一个文件的(基本)名称和(解析的)内容。
要执行模板,请使用“ templates / index.html”中的base name:
tmpl := "index.html"
err := templates.ExecuteTemplate(w, tmpl, "")