ホームページ >バックエンド開発 >Golang >GoLang テンプレートでの HTML エスケープを防ぐには?

GoLang テンプレートでの HTML エスケープを防ぐには?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-02 10:47:311087ブラウズ

How to Prevent HTML Escaping in GoLang Templates?

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 サイトの他の関連記事を参照してください。

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