Go 为什么不';我已经解析过的HTML模板工作了吗?
我分析了我的模板文件,使我更容易工作 我把它们命名为Go 为什么不';我已经解析过的HTML模板工作了吗?,go,go-templates,go-html-template,Go,Go Templates,Go Html Template,我分析了我的模板文件,使我更容易工作 我把它们命名为{{define“pagearea”}。 例如{{define“footer”} 文件夹布局 footer.tmpl-页脚区域 index.tmpl-我的主页 main.go-go代码:) topheader.tmpl-顶级html的一部分 梅因,加油 footer.tmpl: {{定义“页脚”} 这是页脚区域。测试。 {{end} index.tmpl: {{template“topheader”} 主要区域 {{模板“页脚”} to
{{define“pagearea”}
。
例如{{define“footer”}
文件夹布局
- footer.tmpl-页脚区域
- index.tmpl-我的主页
- main.go-go代码:)
- topheader.tmpl-顶级html的一部分
{{定义“页脚”}
这是页脚区域。测试。
{{end}
index.tmpl:
{{template“topheader”}
主要区域
{{模板“页脚”}
topheader.tmpl:
{{define“topheader”}
{{.Sitetitle}}
{{.Sitename}
{{.sitesplanning}
{{end}
生成命令:go Build.
我真的不知道我错过了什么。这里出了什么问题?您曾经解析过模板文件。这将解析所有文件,并返回一个模板,该模板将“包含”所有解析的模板作为关联模板。返回的将代表第一个模板。从模板.ParseFiles()引用
返回的模板名称将具有第一个文件的(基本)名称和(已解析)内容
然后,您使用执行您正在调用其方法的模板的。因此,在您的示例中,它将是topheader.tmpl
,但该模板不会生成任何输出,该模板只定义了一个模板:{{define“topheader”}
您很可能希望执行index.tmpl
,因此请使用可以通过名称识别可执行模板的位置(不要忘记检查返回的错误):
另一个错误是,当您的index.html
模板使用{{template}}
操作包含(执行)其他模板时,您没有向它们传递任何参数,但您希望使用初始参数
因此,在调用其他模板时传递当前参数。您的index.html
应该是:
{{template "topheader" .}}
<h1>
Main area</h1>
{{template "footer" .}}
{{模板“topheader”}
主要区域
{{模板“页脚”。}
见相关问题:
它不会在模板中放置变量。例如
True:mmmmmeeeuaawww
@SeanTolstoyevski也解决了这个问题,请参见编辑后的答案。现在一切都很好。我是新来的。我需要删除我的评论吗?@Seantoltoyevski由你决定。如果他们现在没有用,你可以。如果帖子回答了你的问题,考虑一下投票和接受。
{{define "footer"}}
<footer>
<small>
This is footer area. Test.</small>
</footer>
</body>
</html>
{{end}}
{{template "topheader"}}
<h1>
Main area</h1>
{{template "footer"}}
{{define "topheader"}}
<!DOCTYPE html>
<html lang="
{{.Sitelang}}">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>
{{.Sitetitle}}</title>
</head>
<body>
<header>
<h1>
{{.Sitename}}
</h1>
<p>
{{.Siteslogan}}
</p>
</header>
{{end}}
err = homeTmpl.ExecuteTemplate(os.Stdout, "index.tmpl", data)
if err != nil {
log.Fatal("index template execution failed:", err)
}
{{template "topheader" .}}
<h1>
Main area</h1>
{{template "footer" .}}