GoLang テンプレートへの HTML の挿入
GoLang に HTML テンプレートを入力するときに、HTML 文字がエスケープされ、誤って追加されるという問題が発生することは珍しいことではありません。これに対処するには、データを文字列として渡す場合と template.HTML として渡す場合の違いを理解することが重要です。
デフォルトでは、データが文字列として渡される場合、GoLang テンプレートは HTML 文字をエスケープします。これにより、説明した予期しない出力が発生します。これを防ぐための正しいアプローチは、HTML コンテンツを template.HTML として渡すことです。このデータ型は、HTML コンテンツをエスケープせずに処理するように特別に設計されています。
template.HTML の使用方法の例を次に示します。
<code class="go">package main import ( "html/template" "os" ) func main() { 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) }</code>
HTML コンテンツを template.HTML として渡すことにより、出力は意図したとおりにレンダリングされ、HTML 文字が正しく表示されます。このアプローチにより、不要なエスケープを行わずに HTML テンプレートが正確に入力されます。
以上がGoLang テンプレートでの HTML エスケープを防ぐには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。