doubiaokai4998 2013-02-08 03:51
浏览 218
已采纳

为什么我在Go HTML模板输出中看到ZgotmplZ?

When I'm calling a Go template function to output HTML, it displays ZgotmplZ.

Sample code:

http://play.golang.org/p/tfuJa_pFkm

package main

import (
    "html/template"
    "os"
)

func main() {
    funcMap := template.FuncMap{
        "printSelected": func(s string) string {
            if s == "test" {
                return `selected="selected"`
            }
            return ""
        },

        "safe": func(s string) template.HTML {
            return template.HTML(s)
        },
    }
    template.Must(template.New("Template").Funcs(funcMap).Parse(`
    <option {{ printSelected "test" }} {{ printSelected "test" | safe }} >test</option>
    `)).Execute(os.Stdout, nil)

}

Output:

<option ZgotmplZ ZgotmplZ >test</option>
  • 写回答

5条回答 默认 最新

  • dongwu3747 2013-02-10 10:11
    关注

    "ZgotmplZ" is a special value that indicates that unsafe content reached a CSS or URL context at runtime. The output of the example will be:

     <img src="#ZgotmplZ">
    

    You can add a safe and attr function to the template funcMap:

    package main

    import (
        "html/template"
        "os"
    )
    
    func main() {
        funcMap := template.FuncMap{
            "attr":func(s string) template.HTMLAttr{
                return template.HTMLAttr(s)
            },
            "safe": func(s string) template.HTML {
                return template.HTML(s)
             },
        }
    
        template.Must(template.New("Template").Funcs(funcMap).Parse(`
        <option {{  .attr |attr }} >test</option>
            {{.html|safe}}
         `)).Execute(os.Stdout,   map[string]string{"attr":`selected="selected"`,"html":`<option selected="selected">option</option>`})
    }
    

    The output will look like:

    <option selected="selected" >test</option>
    <option selected="selected">option</option>
    

    You may want to define some other functions which can convert string to template.CSS, template.JS, template.JSStr, template.URL etc.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘