我将HTML标记插入数据库表:
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
将检索到的数据发送到View
func MyEvent(ctx iris.Context){
rows := ...
ctx.ViewData("rows", rows[0])
ctx.View("template.html")
}
如何才能在此事件中禁用自动转义功能?
答案 0 :(得分:0)
如何通过模板和输出获取原始HTML将取决于您使用Iris的模板引擎。 Iris supports five template engines out-of-the-box:
- 标准html,其模板解析器为golang.org/pkg/html/template/
- Django,其模板解析器是github.com/flosch/pongo2
- Pug(Jade),其模板解析器是github.com/Joker/jade
- Handlebars,其模板解析器是github.com/aymerick/raymond
- Amber,其模板解析器是github.com/eknkc/amber
如果您使用的是标准html/template
套餐,那么您可以使用template.HTML
类型将字符串标记为“安全的HTML”:
ctx.ViewData("rows", template.HTML(rows[0]))
或添加您自己的过滤器,只执行return template.HTML(s)
并在模板中使用它。
如果您使用的是Handlebars,那么您将使用{{{...}}}
in the template or raymond.SafeString
in a helper:
{{{yourHTML}}}
如果您正在使用其他模板引擎之一,那么您将使用它们提供的任何机制来通过模板获取原始HTML。
当然,所有这些都假设您在HTML进入数据库之前或者从数据库进入模板之前对其进行清理和清理。