我有一个用 Golang 编写的小型网络服务器,它运行在一堆 unix 设备上。我希望在我的网络服务器提供的每个页面的页眉中显示设备名称,以便我可以知道我正在查看的是哪个设备。网络服务器有六个网页,它们都使用嵌套的标题模板。像这样:<body> {{template "header"}}header.html 文件可能是这样的:{{define "header"}} <h1>Device Name is: {{.}}</h1>{{end}}我希望设备的名称(通过 os.HostName() 获得)位于标头中,但我不知道如何轻松地做到这一点。我能做的是在程序开始时获取主机名,然后在每次调用 ExecuteTemplate 时将其传回 HTML。正如我所说,大约有 6 页,所以有 6 个处理程序,我必须像这样在我的处理程序函数中通过 ExecuteTemplate 传回这个名称。像这样:func XYZHandler(w http.ResponseWriter, r *http.Request) { type returnInfo struct { Name string } XYZReturnInfo := returnInfo{Name: deviceName} // deviceName obtained at start of program tmpl.ExecuteTemplate(w, "XYZ.html", returnInfo )}然后 HTML 页面使用.Name.但是有什么方法可以在程序开始时将该 deviceName 值放入标头模板中吗?这样它就可以嵌套到每个页面中了吗?我应该补充一点,我也在启动时解析我的 .html 文件。使用解析文件。
1 回答
Qyouu
TA贡献1786条经验 获得超11个赞
添加os.HostName
为模板函数。在标头中调用该函数。
这是在解析模板时定义函数的示例:
t := template.Must(template.New("").Funcs( template.FuncMap{"hostname": os.Hostname}).ParseFiles(fnames...))
使用这样的功能:
{{define "header"}} <h1>Device Name is: {{hostname}}</h1> {{end}}
- 1 回答
- 0 关注
- 95 浏览
添加回答
举报
0/150
提交
取消