近期在使用Golang的net/http和html/template开发一个简单的HAProxy负载均衡任务管理系统(见搭建高可用负载均衡组件及缓存DNS一文说明)。
htmp/template在渲染页面模板的时候默认会转义字符串中的html标签,但有时我们并不想转义html标签,以下图所示为例:
图1中“ip:port列表(一行一个)”和“说明”两个输入框的内容行与行是以\n分隔的;图2中,这两部分内容分别在表格的“后端机器列表”和“说明”两列中展示,但行与行其实是以
分隔的;那么在将数据存入数据库之前或从数据库中取出数据后,会将字符串中的\n替换为
。如果将替换后的数据以字符串类型传入模板,
标签渲染后的效果就是
文本而不是换行。
有两种方式避免html/template转义html标签:
1.
把字符串类型数据转换成template.HTML类型再传入模板进行渲染:
lti := listenTaskInfo{
Seq: seq,
Id: row.Id,
Servers: template.HTML