Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich HTML ohne Escape in Go-Vorlagen einfügen?

Wie kann ich HTML ohne Escape in Go-Vorlagen einfügen?

Linda Hamilton
Linda HamiltonOriginal
2024-10-30 04:38:28888Durchsuche

How Can I Insert HTML into Go Templates Without Escaping?

HTML in Go-Vorlagen einfügen

Bei der Arbeit mit Go-Vorlagen ist es wichtig zu überlegen, wie Sie HTML-Inhalte einfügen, um unerwartetes Verhalten zu vermeiden. Beispielsweise kann das Einfügen einer Zeichenfolge, die HTML-Code enthält, dazu führen, dass unerwünschte Zeichen maskiert werden, was zu einer falschen Ausgabe führt.

Um das Einfügen von HTML in Go-Vorlagen korrekt zu handhaben, befolgen Sie diese Richtlinien:

Pass HTML als template.HTML:

Anstatt eine Zeichenfolge direkt zu übergeben, packen Sie Ihren HTML-Inhalt in einen template.HTML-Typ ein. Dadurch wird die Vorlagen-Engine angewiesen, den Inhalt als Roh-HTML zu behandeln und zu verhindern, dass ihm Zeichen entzogen werden.

Beispiel:

<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>

Übergabe von Zeichenfolgen vermeiden:

Die Übergabe von HTML-Inhalten als String kann zu unerwünschtem Escapen führen. Zum Beispiel:

<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-Daten:

Wenn Sie JSON-Daten in Ihre Vorlage einfügen, können Sie eine Bibliothek wie „encoding/json“ zum Codieren verwenden als String. Anschließend können Sie die codierte Zeichenfolge an die Vorlage übergeben und sie mithilfe der JSON-Vorlagenfunktion innerhalb der Vorlage dekodieren.

Das obige ist der detaillierte Inhalt vonWie kann ich HTML ohne Escape in Go-Vorlagen einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn