gpt4 book ai didi

go.rice 加载模板到 gin

转载 作者:IT王子 更新时间:2023-10-29 01:39:20 26 4
gpt4 key购买 nike

我有以下目录布局

$ ls templates/
bar.html foo.html

我已经运行了以下命令

$ rice embed-go

我的代码看起来像

主要包

import (
"github.com/gin-gonic/gin"
"github.com/GeertJohan/go.rice"
"fmt"
"html/template"
)


func main() {
router := gin.Default()

//html := template.Must(template.ParseFiles("templates/foo.html", "templates/bar.html"))
//router.SetHTMLTemplate(html)

templateBox, err := rice.FindBox("templates")
if err != nil {
fmt.Println(err)
}

list := [...]string{"foo.html", "bar.html"}
for _, x := range list {
templateString, err := templateBox.String(x)
if err != nil {
fmt.Println(err)
}

tmplMessage, err := template.New(x).Parse(templateString)
if err != nil {
fmt.Println(err)
}

router.SetHTMLTemplate(tmplMessage)
}


router.GET("/index", func(c *gin.Context) {
c.HTML(200, "foo.html", gin.H{
"Message": "Main website",
})
})
router.GET("/bar", func(c *gin.Context) {
c.HTML(200, "bar.html", gin.H{
"Message": "so much bar",
})
})
router.Run(":8080")
}

我遇到的问题是我可以很好地 curl 以下 URL

$ curl 0:8080/bar
bar so much bar

问题是/index url 不起作用,因为 SetHTMLTemplate 正在覆盖它。

我想知道如何将多个加载的模板从 go.rice 创建的 bindata 文件传递​​到 gin。

出现以下错误

[GIN-debug] [ERROR] html/template: "foo.html" is undefined
[GIN] 2016/01/17 - 07:19:40 | 500 | 67.033µs | 127.0.0.1:52467 | GET /index

谢谢

最佳答案

SetHTMLTemplate 每次在循环中调用时都会覆盖模板。

看完下面,你可以试试https://github.com/gin-gonic/gin/issues/320 :

func loadTemplates() multitemplate.Render {
templateBox, err := rice.FindBox("templates")
if err != nil {
fmt.Println(err)
}

r := multitemplate.New()

list := [...]string{"foo.html", "bar.html"}
for _, x := range list {
templateString, err := templateBox.String(x)
if err != nil {
fmt.Println(err)
}

tmplMessage, err := template.New(x).Parse(templateString)
if err != nil {
fmt.Println(err)
}

r.Add(x, tmplMessage)
}

return r
}

然后在你的路由定义中:

router.HTMLRender = loadTemplates()

关于go.rice 加载模板到 gin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34840050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com