首頁 >後端開發 >Golang >如何在Go模板中插入HTML而不轉義?

如何在Go模板中插入HTML而不轉義?

Linda Hamilton
Linda Hamilton原創
2024-10-30 04:38:28988瀏覽

How Can I Insert HTML into Go Templates Without Escaping?

將 HTML 插入 Go 模板

使用 Go 模板時,重要的是要考慮如何插入 HTML 內容以避免意外行為。例如,插入包含 HTML 程式碼的字串可能會導致不必要的字元轉義,從而導致不正確的輸出。

要在Go 模板中正確處理HTML 插入,請遵循以下準則:

透過HTML 作為template.HTML:

不要直接傳遞字元串,而是將HTML 內容包裝在template.HTML 類型中。這告訴模板引擎將內容視為原始 HTML,防止其轉義字元。

範例:

<code class="go">tpl := template.Must(template.New("main").Parse(`{{define "T"}}{{.Html}}{{.String}}{{end}}`))
tplVars := map[string]interface{} {
    "Html": template.HTML("<p>Paragraph</p>"),
    "String": "<p>Paragraph</p>",
}
tpl.ExecuteTemplate(os.Stdout, "T", tplVars)

//OUTPUT: <p>Paragraph</p>&amp;lt;p&amp;gt;Paragraph&amp;lt;/p&amp;gt;</code>

避免傳遞字串:

將HTML 內容作為字串傳遞可能會導致不必要的轉義。例如:

<code class="go">tpl := template.Must(template.New("main").Parse(`{{define "T"}}{{.Html}}<p>{{.String}}</p>{{end}}`))
tplVars := map[string]interface{} {
    "Html": "<p>Paragraph</p>",
    "String": "<p>Paragraph</p>",
}
tpl.ExecuteTemplate(os.Stdout, "T", tplVars)

//OUTPUT: <p>Paragraph</p>&amp;lt;p&amp;gt;Paragraph&amp;lt;/p&amp;gt;</code>

JSON 資料:

如果您將JSON 資料插入範本中,則可以使用像encoding/json 這樣的函式庫對其進行編碼作為字串。然後,您可以將編碼後的字串傳遞給模板,並使用 json 模板函數在模板中對其進行解碼。

以上是如何在Go模板中插入HTML而不轉義?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn