template不转译HTML标签,Golang中如何让html/template不转义html标签

在Golang中使用html/template时,模板默认会转义HTML标签。可以通过将字符串转换为template.HTML类型或者自定义模板函数来避免这一行为。本文介绍了两种方法:一是直接转换数据类型,二是注册自定义的unescaped函数,并在模板中使用该函数来保持HTML标签的原始状态。此外,还提到了text/template中的其他数据类型如template.JS和template.CSS。
摘要由CSDN通过智能技术生成

近期在使用Golang的net/http和html/template开发一个简单的HAProxy负载均衡任务管理系统(见搭建高可用负载均衡组件及缓存DNS一文说明)。

htmp/template在渲染页面模板的时候默认会转义字符串中的html标签,但有时我们并不想转义html标签,以下图所示为例:

41f7017ae3ce012ba759161ea29aebe8.png

fbb8acfce5516164cf09c5d2504886b7.png

图1中“ip:port列表(一行一个)”和“说明”两个输入框的内容行与行是以\n分隔的;图2中,这两部分内容分别在表格的“后端机器列表”和“说明”两列中展示,但行与行其实是以
分隔的;那么在将数据存入数据库之前或从数据库中取出数据后,会将字符串中的\n替换为
。如果将替换后的数据以字符串类型传入模板,
标签渲染后的效果就是
文本而不是换行。

有两种方式避免html/template转义html标签:

1.

把字符串类型数据转换成template.HTML类型再传入模板进行渲染:

lti := listenTaskInfo{

Seq: seq,

Id: row.Id,

Servers: template.HTML

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值