duan051347 2014-12-11 14:08
浏览 33

前往:提供静态模板[重复]

This question is an exact duplicate of:

I can't seem to get the static templates served. Here's my code

Go Directory Structure

src
     /github.com
          /sam
               /hello
                   auth.go
                   main.go
                   /templates
                       signup.html

auth.go

package main
//...
func homeHandler(w http.ResponseWriter, r *http.Request) {
    renderTemplate(w, "signup", nil)
}

func renderTemplate(w http.ResponseWriter, tmpl string, user *data.User) {
    t := template.Must(template.New("tele").ParseFiles("templates/" + tmpl + ".html"))
    err := t.ExecuteTemplate(w, tmpl, user)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
    }
}

main.go

package main

func main() {
    //...
    http.Handle("/templates/", http.StripPrefix("/templates/", http.FileServer(http.Dir("templates"))))
    //...
}

signup.html

{{ define "signup" }}
//html code
{{ end }}

Ran go install github.com/sam/auth and opened localhost:3000 but I still get the panic error:

open templates/signup.html: no such file or directory

WHY???

</div>
  • 写回答

1条回答 默认 最新

  • duanlujiaji10335 2014-12-11 15:52
    关注

    The path you use - templates/ - is relative to where the program is run. if you want it to work regardless of where you run the program, you should use an absolute path, like $GOPATH/src/github.com/sam/hello/templates/

    But this is fragile too, since the directory can move, and your program will not run on another machine. I would suggest you look at bundling your assets (the templates) with the binary. A good way to do that is using go-bindata

    评论

报告相同问题?

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路