猿问

将 template.HTML 直接渲染成模板

我最近换掉了数据存储,作为一个副作用,我不得不将结构字段从template.HTMLtostring更改为与 marshaller/DB 驱动程序兼容。此字段RenderedDesc包含通过russross/blackfriday传递的渲染 HTML 。


以前,我可以将整个结构“按原样”传递到模板中并调用{{ .RenderedDesc }}模板。


因为它现在是一个字符串,所以我添加了一个过滤器来将它转换回模板渲染:


模板.go


func RenderUnsafe(s string) template.HTML {

    return template.HTML(s)

}


template.FuncMap{

        ...

        "unsafe": RenderUnsafe,

    }

_content.tmpl


...

<div class="detail">


    {{ .RenderedDesc | unsafe }}


</div>

...

有没有更好的方法来实现这一点而不必在模板级别使用过滤器?缺少从我的数据库驱动程序(不在卡片上)重写编组逻辑,看起来这是“存储”字符串但呈现原始 HTML 的最简单方法。


拉莫斯之舞
浏览 375回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答