为了账号安全,请及时绑定邮箱和手机立即绑定

Golang:帮助将函数注册到模板中

Golang:帮助将函数注册到模板中

Go
慕斯709654 2021-10-11 13:48:40
我试图在我的模板中添加一个函数来“人性化”(https://gowalker.org/github.com/dustin/go-humanize)输出,但似乎我做错了,因为我得到了这个错误:恐慌:模板:dashboard.tmpl:192:未定义函数“humanizeTime”func renderTemplate(w http.ResponseWriter, name string, data map[string]interface{}) error {    //functions for templates    templateFuncs := template.FuncMap{        "humanizeTime": func(t time.Time) string {            return humanize.Time(t)        },    }    tmpl := Templates[name+".tmpl"].Funcs(templateFuncs)    w.Header().Set("Content-Type", "text/html; charset=utf-8")    err := tmpl.ExecuteTemplate(w, name, data)    if err != nil {        log.Printf("Error rendering template: %s", err.Error())        http.Error(w, err.Error(), http.StatusInternalServerError)        return errors.New("Error trying to render template")    }    return nil}补充:我在 init() 上定义和加载我的模板映射:var Templates      map[string]*template.Templateif Templates == nil {    Templates = make(map[string]*template.Template)}layouts, err := filepath.Glob("templates/*.tmpl")if err != nil {    panic(err)}for _, layout := range layouts {    Templates[filepath.Base(layout)] = template.Must(template.ParseFiles(layouts...))}我只是将我的定义更改为:for _, layout := range layouts {    Templates[filepath.Base(layout)] = template.Must(template.ParseFiles(layouts...)).Funcs(templateFuncs)}但还没有工作,我得到了同样的错误:未定义。请问有人可以帮我吗?谢谢。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 320 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信