You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Golang模板中使用动态HTML标签?

解决动态HTML标签渲染被转义的问题

问题核心是模板引擎默认会对输出的HTML特殊字符(如<、>)进行转义,防止XSS注入,所以你的动态标签被转成了实体字符。要实现预期效果,需要告诉模板引擎这部分内容是安全的HTML,无需转义,具体有两种常用写法:

写法一:拼接后整体标记为安全HTML

{{ printf "<%s>%s</%s>" (or .Settings.headlineTag "h2") .Content.headline (or .Settings.headlineTag "h2") | safeHTML }}
  • 用printf拼接完整的标题标签内容
  • 通过safeHTML过滤器标记内容为安全HTML,禁止引擎转义

写法二:分标签部分标记安全HTML

如果想保留原有的换行格式,可以分开处理开始和结束标签:

{{ (printf "<%s>" (or .Settings.headlineTag "h2")) | safeHTML }}
  {{ .Content.headline }}
{{ (printf "</%s>" (or .Settings.headlineTag "h2")) | safeHTML }}
  • 分别生成开始/结束标签字符串,再用safeHTML标记为安全内容
  • 标题文本部分如果不需要HTML解析,保持原样即可

注意:只有当你完全信任headlineTag的来源(比如是自己配置的固定值,而非用户输入)时,才适合用这种方式,避免引入XSS风险。

内容的提问来源于stack exchange,提问作者zarathustra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:10:03