去template.ExecuteTemplate包括html

去template.ExecuteTemplate包括html,第1张

概述我已经遵循本教程: http://golang.org/doc/articles/wiki/final.go,并稍微修改了我的需要/想要的.问题是我想在模板中支持HTML.我意识到这是一个安全隐患,但现在不是一个问题. 页面渲染的结果: <h1>this<strong>is</strong>a test</h1> 让我解释一下代码: type Page struct { Title str 我已经遵循本教程: http://golang.org/doc/articles/wiki/final.go,并稍微修改了我的需要/想要的.问题是我想在模板中支持HTML.我意识到这是一个安全隐患,但现在不是一个问题.

页面渲染的结果:

<h1>this<strong>is</strong>a test</h1>

让我解释一下代码:

type Page struct {    Title string    Body  []byte}

我想要HTML的数据存储在Page.Body中.这是类型[]字节,这意味着我不能(或可以?)运行HTML / template.HTML(Page.Body),因为该函数需要一个字符串.

我有这样的预渲染模板:

var (    templates = template.Must(template.Parsefiles("tmpl/edit.HTML","tmpl/vIEw.HTML")))

实际的ExecuteTemplate如下所示:

err := templates.ExecuteTemplate(w,tmpl+".HTML",p)

其中w为w http.ResponseWriter,tmpl为tmpl字符串,p为p * Page

最后我的’vIEw.HTML'(模板)看起来像下面这样:

<h1>{{.Title}}</h1><p>[<a href="/edit/{{.Title}}">edit</a>]</p><div>{{printf "%s" .Body}}</div>

我试过的事情

> {{printf“%s”.Body | HTML}}没有做任何事情
>我已经包括github.com/russross/blackfrIDay(Markdown处理器),并且已经运行p.Body = blackfrIDay.MarkdownCommon(p.Body),它正确地将Markdown转换为HTML,但是HTML仍然作为实体输出.
>编辑:我尝试了以下代码(我不知道为什么格式被搞砸了),它仍然输出完全一样的.

var的template.HTML
s = template.HTML(p.Body)
p.Body = [] byte

任何指导都不胜感激.如果我感到困惑,请问我可以修改我的问题.

@H_301_39@解决方法 将[]字节或字符串转换为template.HTML(记录为 here)
p.Body = template.HTML(s) // where s is a string or []byte

然后,在你的模板中,只需:

{{.Body}}

它将被打印而不会转义.

编辑

为了能够在您的页面的主体中包含HTML,您需要更改页面类型声明:

type Page struct {    Title string    Body  template.HTML}

然后分配给它.

总结

以上是内存溢出为你收集整理的去template.ExecuteTemplate包括html全部内容,希望文章能够帮你解决去template.ExecuteTemplate包括html所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1102378.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存