doucai4274 2018-05-11 00:36
浏览 1
已采纳

包含其他目录中的模板

In templates\index.gohtml I am using this code:

{{template "header"}}
<h1>INDEX</h1>
{{template "nav"}}

<form action="/apply" method="post">
    <label for="firstname">First Name</label>
    <input type="text" name="firstname" id="firstname">
    <input type="submit">
</form>

But I am getting the error:

html/template:index.gohtml:3:11: no such template "nav"

I guess, this is because nav is defined in templates\includes av.gohtml. If so, I don't know why I am not getting the same error for header, since it's in the same directory.

my main.go looks like this:

func init() {
    tpl = template.Must(template.ParseGlob("templates/*.gohtml"))
}

func main() {
    http.HandleFunc("/", index)
}

func index(w http.ResponseWriter, r *http.Request) {
    err := tpl.ExecuteTemplate(w, "index.gohtml", nil)
    if err != nil {
        log.Println(err)
        http.Error(w, "Internal server error", http.StatusInternalServerError)
    }
}

Any help would be appreciated.

  • 写回答

1条回答 默认 最新

  • duanlan6259 2018-05-11 03:56
    关注

    Right now you are only parsing files in the templates folder.
    If you change this line

    tpl = template.Must(template.ParseGlob("templates/*.gohtml"))
    

    to this

    tpl = template.Must(template.Must(template.ParseGlob("templates/*.gohtml")).ParseGlob("templates/includes/*.gohtml"))
    

    it will parse the files in the templates folder, then parse the files in the templates/includes folder adding them to the existing parsed templates.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)