> 백엔드 개발 > Golang > 이스케이프 없이 Go 템플릿에 HTML을 어떻게 삽입할 수 있나요?

이스케이프 없이 Go 템플릿에 HTML을 어떻게 삽입할 수 있나요?

Linda Hamilton
풀어 주다: 2024-10-30 04:38:28
원래의
987명이 탐색했습니다.

How Can I Insert HTML into Go Templates Without Escaping?

Go 템플릿에 HTML 삽입

Go 템플릿으로 작업할 때 예기치 않은 동작을 피하기 위해 HTML 콘텐츠를 삽입하는 방법을 고려하는 것이 중요합니다. 예를 들어 HTML 코드가 포함된 문자열을 삽입하면 원치 않는 문자 이스케이프가 발생하여 잘못된 출력이 발생할 수 있습니다.

Go 템플릿에서 HTML 삽입을 올바르게 처리하려면 다음 지침을 따르세요.

통과 HTML을 template.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>&amp;lt;p&amp;gt;Paragraph&amp;lt;/p&amp;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>&amp;lt;p&amp;gt;Paragraph&amp;lt;/p&amp;gt;</code>
로그인 후 복사

JSON 데이터:

JSON 데이터를 템플릿에 삽입하는 경우 인코딩/json과 같은 라이브러리를 사용하여 인코딩할 수 있습니다. 문자열로. 그런 다음 인코딩된 문자열을 템플릿에 전달하고 json 템플릿 함수를 사용하여 템플릿 내에서 디코딩할 수 있습니다.

위 내용은 이스케이프 없이 Go 템플릿에 HTML을 어떻게 삽입할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿