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

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

WBOY
WBOY앞으로
2024-02-06 09:45:081071검색

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

질문 내용

"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으로 문의하시기 바랍니다. 삭제