ホームページ >バックエンド開発 >Golang >エスケープせずに HTML を Go テンプレートに挿入するにはどうすればよいですか?

エスケープせずに HTML を Go テンプレートに挿入するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-29 10:02:30377ブラウズ

How to Insert HTML into Go Templates Without Escaping?

エスケープせずに HTML を Go テンプレートに挿入する

HTML 要素を含む Go テンプレートを定義する場合、HTML の一部としてレンダリングされるべき文字を意図せずエスケープしないようにすることが重要です。この問題は、文字列を使用してテンプレート内の HTML コンテンツを表すときに発生します。

エスケープを防ぐための正しい方法は、HTML コンテンツを template.HTML のインスタンスとして渡すことです。この型は、Go テンプレート内で HTML のレンダリングを処理し、エスケープせずに表示されるようにします。

この手法を示す例:

<code class="go">package main

import (
    "fmt"
    "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 を Go テンプレートに挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。