Go テンプレートへの HTML の挿入
Go テンプレートを使用する場合、予期しない動作を避けるために HTML コンテンツを挿入する方法を検討することが重要です。たとえば、HTML コードを含む文字列を挿入すると、不要な文字エスケープが発生し、不正確な出力が発生する可能性があります。
Go テンプレートで HTML 挿入を正しく処理するには、次のガイドラインに従ってください:
Pass template.HTML としての 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>&lt;p&gt;Paragraph&lt;/p&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>&lt;p&gt;Paragraph&lt;/p&gt;</code>
JSON データ:
JSON データをテンプレートに挿入する場合は、encoding/json などのライブラリを使用してエンコードできます。文字列として。次に、エンコードされた文字列をテンプレートに渡し、json テンプレート関数を使用してテンプレート内でデコードできます。
以上がエスケープせずに HTML を Go テンプレートに挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。