亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

具有動態內容的 Golang 模板標題

具有動態內容的 Golang 模板標題

Go
蕪湖不蕪 2023-06-05 18:22:59
我有一個用 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}}

在 Playground 上運行它。


查看完整回答
反對 回復 2023-06-05
  • 1 回答
  • 0 關注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號