【问题标题】:Go: error serving html templateGo:错误提供 html 模板
【发布时间】:2014-08-17 07:38:19
【问题描述】:

我在下面提供 html 模板的方式有问题吗?页面上没有任何内容。

twitter.go:

func loghandler(w http.ResponseWriter, r *http.Request) {
    t := template.Must(template.New("tele").ParseFiles("layout/log.html"))
    t.Execute(w, nil)
}

log.html:

<html>
    <form action="/login" method="POST">
    <label for="name">Username</label>
    <input type="text" id="Username" name="name"></input>
    <button type="submit">Login</button>
    </form> 
</html>

目录结构:

twitter
     layout
          log.html
twitter.go

【问题讨论】:

  • 您检查错误了吗?
  • if err := t.Execute(w, nil); err != nil { panic(err) }
  • 它说 html/template:tele: "tele" 是一个不完整或空的模板
  • 之前的错误信息是:open layout/log.html: no such file or directory
  • 默不作声的小仙女们好烦。

标签: go


【解决方案1】:

好吧,刚刚想通了,一种方法:

log.html:

{{define "log"}}
<html>
<form action="/login" method="POST">
<label for="name">Username</label>
<input type="text" id="Username" name="name"></input>
<button type="submit">Login</button>
</form> 
</html>
{{end}}

twitter.go:

func loghandler(w http.ResponseWriter, r *http.Request) {
    t := template.Must(template.New("tele").ParseFiles("layout/log.html"))
    if err := t.ExecuteTemplate(w, "log", nil); err != nil {
        panic(err)
    }
}

【讨论】:

【解决方案2】:

使用像这样简单的东西:

func loghandler(w http.ResponseWriter, r *http.Request) {
    t,_ := template.ParseFiles("layout/log.html")
    t.Execute(w, nil)
}

我试过了,效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 2020-10-14
    • 2013-01-07
    • 2018-04-01
    相关资源
    最近更新 更多