我写了一个包装函数来渲染这样的模板func RenderTemplate(w http.ResponseWriter, data interface{}, tmpl... string) { cwd, _ := os.Getwd() for _ , file := range tmpl{ file = filepath.Join(cwd,"./view/"+file+".html") } t, err := template.ParseFiles(tmpl...) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } err = t.Execute(w, data) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) }}我在其中设置了静态文件夹和路由处理程序 mainhttp.Handle("/public/",http.StripPrefix("/public/",http.FileServer(http.Dir("public"))))http.HandleFunc("/",route.IndexHandler)这是我的路线处理程序func IndexHandler(w http.ResponseWriter, r *http.Request) { files:=[]string{"base","index"} util.RenderTemplate(w, nil, files...)}我打算使用模板嵌套来帮助index.html扩展base.html这是 base.html{{define "base"}}<!DOCTYPE html><html><head> <meta charget="utf-8"> <title>{{template "title".}}</title> <script type="text/javascript" src="https://code.jquery.com/jquery-2.2.0.min.js"></script> <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> <script type="text/javascript" src="/js/isotope.pkgd.min.js"></script> <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"> <link rel="stylesheet" type="text/css" href="/css/style.css"></head><body> {{template "index".}}</body></html>{{end}}这是 index.html<!DOCTYPE html><html>{{define "title"}}Homepage{{end}}<body> {{define "index"}} <div class="wrapper"> <div class="page-content"> <div class="container"> <div class="left"> <img src="../public/images/img_landing_page_mac.png">但是当我运行服务器并在浏览器上请求路径时,它显示一个错误open base: no such file or directory我的渲染功能有问题吗?
1 回答
慕无忌1623718
TA贡献1744条经验 获得超4个赞
t, err := template.ParseFiles(tmpl...)
我猜‘tmpl’似乎不是文件路径:(
我猜你想喜欢这个。
files := make([]string, len(tmpl))
for i, file := range tmpl{
files[i] = appendfilepath.Join(cwd,"./view/"+file+".html")
}
t, err := template.ParseFiles(files...)
- 1 回答
- 0 关注
- 231 浏览
添加回答
举报
0/150
提交
取消
