Go ExecuteTemplate(template.ParseGlob)加载空白页

Go ExecuteTemplate(template.ParseGlob)加载空白页,go,go-templates,Go,Go Templates,我正在尝试从文件夹cms/template加载模板page.gohtml。当尝试在Firefox浏览器中查看时,加载空白 处理程序。转到文件 var Tmpl = template.Must(template.ParseGlob("../templates/*")) func ServeIndex(w http.ResponseWriter, r *http.Request) { p := &Page{ Title: "Go Projects CMS",

我正在尝试从文件夹
cms/template
加载模板
page.gohtml
。当尝试在Firefox浏览器中查看时,加载空白

处理程序。转到文件

var Tmpl = template.Must(template.ParseGlob("../templates/*"))

func ServeIndex(w http.ResponseWriter, r *http.Request) {
    p := &Page{
        Title:   "Go Projects CMS",
        Content: "Welcome to the Home Page!",
        Posts: []*Post{
            {
                Title:         "Hello World!",
                Content:       "Hey y'all, Thanks for coming",
                DatePublished: time.Now(),
            },
            {
                Title:         "This Has Comments",
                Content:       "Atlassian Just Bought Trello...GO!",
                DatePublished: time.Now().Add(-time.Hour),
                Comments: []*Comment{
                    {
                        Author:        "Davy Jones",
                        Content:       "This is something to say about something",
                        DatePublished: time.Now().Add(-time.Hour / 2),
                    },
                },
            },
        },
    }
    Tmpl.ExecuteTemplate(w, "page", p)
}
func main() {
    r := mux.NewRouter()
    r.HandleFunc("/", cms.ServeIndex)

    fmt.Println("Server running at port 3000")
    go http.ListenAndServe(":3000", r)
    fmt.Scanln()
}
cmd/main.go文件

var Tmpl = template.Must(template.ParseGlob("../templates/*"))

func ServeIndex(w http.ResponseWriter, r *http.Request) {
    p := &Page{
        Title:   "Go Projects CMS",
        Content: "Welcome to the Home Page!",
        Posts: []*Post{
            {
                Title:         "Hello World!",
                Content:       "Hey y'all, Thanks for coming",
                DatePublished: time.Now(),
            },
            {
                Title:         "This Has Comments",
                Content:       "Atlassian Just Bought Trello...GO!",
                DatePublished: time.Now().Add(-time.Hour),
                Comments: []*Comment{
                    {
                        Author:        "Davy Jones",
                        Content:       "This is something to say about something",
                        DatePublished: time.Now().Add(-time.Hour / 2),
                    },
                },
            },
        },
    }
    Tmpl.ExecuteTemplate(w, "page", p)
}
func main() {
    r := mux.NewRouter()
    r.HandleFunc("/", cms.ServeIndex)

    fmt.Println("Server running at port 3000")
    go http.ListenAndServe(":3000", r)
    fmt.Scanln()
}
模板/page.gohtml

{{ define "page" }}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>{{ .Title }}</title>
    <link rel="stylesheet" href="https://unpkg.com/tachyons@4.10.0/css/tachyons.min.css"/>
</head>
<body class="w-100 sans-serif bg-white">
    <h1>Welcome</h1>
    <div class="baskerville pb5">
    {{ .Content }}
    {{if .Posts}}
        {{range .Posts}}
            {{template "post" .}}
        {{end}}
    {{end}}
    </div>
</body>
</html>
{{ end }}
{{定义“页面”}
{{.Title}
欢迎
{{.Content}
{{if.Posts}}
{{range.Posts}}
{{模板“发布”}
{{end}
{{end}
{{end}

我在使用错误处理时发现了问题

if err := Tmpl.ExecuteTemplate(w, "page", p); err != nil {
        log.Printf("Template error: %v", err)
        w.WriteHeader(http.StatusInternalServerError)
        return
    }
当我在comment.gohtml中使用
定义的“comment”
时,它打印了“无此类模板注释”

{{ define "page" }}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>{{ .Title }}</title>
    <link rel="stylesheet" href="https://unpkg.com/tachyons@4.10.0/css/tachyons.min.css"/>
</head>
<body class="w-100 sans-serif bg-white">
    <h1>Welcome</h1>
    <div class="baskerville pb5">
    {{ .Content }}
    {{if .Posts}}
        {{range .Posts}}
            {{template "post" .}}
        {{end}}
    {{end}}
    </div>
</body>
</html>
{{ end }}

很抱歉发布此问题,我最近开始使用GoLang。

始终检查所有错误以避免此类情况。请检查控制台错误与问题无关的表达式,因此我将其从问题中删除。请检查ExecuteTemplate以查看错误。页面结构是在某处定义的,对吗?另外,您将gohtml文件显示为在template/中,但在parseglob中,您正在签入模板,而不是template。我将检查错误。是的,是复数形式。我将再次更新结果。对不起,几周前我刚开始学习Golang。