> 백엔드 개발 > Golang > 템플릿에서 '/'를 이스케이프하세요

템플릿에서 '/'를 이스케이프하세요

WBOY
풀어 주다: 2024-02-06 09:45:08
앞으로
1072명이 탐색했습니다.

템플릿에서 /를 이스케이프하세요

질문 내용

"avatars/avatar.png"와 같은 문자열을 전달하고 싶지만 이를 템플릿에 전달하면 문자 이스케이프가 발생합니다. 그래서 템플릿에 전달되는 함수를 작성했습니다:

으아아아

하지만 여전히 "정의되지 않은 함수 'unescape'"라는 메시지가 표시됩니다. unescape가 정의되지 않았습니까?

"net/url"을 가져왔습니다.


정답


unescape가 정의되지 않았나요?

기술적으로는 그렇지 않습니다. 정의를 내리셨는데 너무 늦었습니다. 함수 정의 여부는 실행 중이 아닌 파싱 중에 확인됩니다. 당신은 parseglob ,然后您执行 tpl.func(...) . 그것은 정상이 아닙니다.

대신 이렇게 하세요:

으아아아

이스케이프는 입력이 아닌 출력에 있는 데이터와 에 있는 데이터로 작업하는 컨텍스트unescape 可能不会帮助您“欺骗”您的方式,因为转义将会完成在 unescape에 따라 발생하는 안전한 기능입니다.

즉, {{unescape .}}를 수행하면 구문 분석기가 컨텍스트에 따라 이를 {{unescape .}}로 변환할 수 있습니다(urlescaper는 내부 이스케이프 함수입니다. 이를 방지하려면 템플릿에서 {{unescape .}} 时,解析器可能会根据上下文将其转换为 {{unescape . | urlescaper}}urlescaper 是一个内部转义函数)。为了避免这种情况,当您想要在模板中逐字使用已知的安全字符串时,您应该使用 输入字符串而不是 unescape알려진 안전한 문자열

을 문자 그대로 사용하려는 경우 Enter를 사용해야 합니다. unescape 대신 문자열

을 사용하세요.

Playground 예제

를 참조하세요. 컨텍스트, 이스케이프, 문자열 입력 등에 대한 자세한 내용은

패키지 설명서🎜를 참조하세요. 모든 것이 명확하게 설명되어 있습니다. 🎜

위 내용은 템플릿에서 '/'를 이스케이프하세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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