登录
首页 >  Golang >  Go问答

在Go中如何使HTML模板识别字符串为HTML

来源:stackoverflow

时间:2024-02-08 11:39:23 498浏览 收藏

大家好,我们又见面了啊~本文《在Go中如何使HTML模板识别字符串为HTML》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

我有一个来自 go docs 教程的 wiki web 应用程序,并且想要添加一些内容。其中之一是首页上所有 wiki 条目的列表。我有一个如下所示的 html 模板:

this is the front page of the wiki

here is the list of entries:

    {{printf "%s" .body}}

这是页面的处理程序

func fronthandler(w http.responsewriter, r *http.request){
    entries := getentries()
    p := &page{title: "frontpage", body:  []byte(entries)}

    rendertemplate(w, "front", p)

}

我已经将条目列表格式化为 html 中的 ul,它是一个字符串拼接,将其转换为字节拼接,其格式如下:

  • page1
  • page2
  • 等等,所以我想将其呈现为 html 而不是像现在这样的纯文本。

    我尝试更改将页面主体从字节拼接传递到字符串的方式,并且得到了相同的结果。我尝试更改渲染页面的方式,以采用专门为首页制作的不同结构作为解决方法,但它也没有效果。这是我渲染模板的方式

    func renderTemplate(w http.ResponseWriter, tmpl string, p *Page){
        err := templates.ExecuteTemplate(w, tmpl + ".html", p)
        if err != nil{
            http.Error(w, err.Error(), http.StatusInternalServerError)
        }
    }

    我还尝试了几种不同的方式在 .html 文件中显示它而不是 {{printf "%s" .body"}} 但我没有成功。

    非常感谢任何帮助,也请告诉我是否应该提供更多信息。


    正确答案


    您可以使用Typed strings

    根据文档:

    示例:

    base.html

    
    
      
        
        
        
        document
      
      
        
      {{range .}}{{.}}{{end}}
    func frontHandler(w http.ResponseWriter, r *http.Request) {
    
        entry := []string{"
  • page1
  • ", "
  • page2
  • "} tmpl, err := template.ParseFiles("base.html") if err != nil { log.Fatal("Unable to parse") } // template.HTML takes only one string, hence we loop over the entry slice //and store the slice values in htmlvalues of `HTML` type var htmlvalues []template.HTML for _, n := range entry { htmlEncapsulate := template.HTML(n) htmlvalues = append(htmlvalues, htmlEncapsulate) } tmpl.Execute(w, htmlvalues)

    以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

    声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
    相关阅读
    更多>
    最新阅读
    更多>
    课程推荐
    更多>