我有一個用 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 關注
- 129 瀏覽
添加回答
舉報
0/150
提交
取消