如何更改 echo Render 中的 Delim?

我正在尝试更改 html 模板中的分隔符。不幸的是,它在 render 函数中不起作用,在 main 函数中也不起作用。

请参阅https://pkg.go.dev/text/template#Template.Delims

package main


import (

    "html/template"

    "io"

    "net/http"


    "github.com/labstack/echo/v4"

    "github.com/labstack/echo/v4/middleware"

)


type Template struct {

    templates *template.Template

}


func (t *Template) Render(w io.Writer, name string, data interface{}, c echo.Context) error {

    t.templates.Delims("[[", "]]")

    return t.templates.ExecuteTemplate(w, name, data)

}

func Hello(c echo.Context) error {

    test := `{

        "name" : "Ben",

        "country" : "Germany",

        "city" : "Berlin",

        "body":{"test":"test","test2":"test2"}

    }`

    return c.Render(http.StatusOK, "hello", test)

}


func main() {

    // Echo instance

    e := echo.New()


    t := &Template{

        templates: template.Must(template.ParseGlob("public/views/*.html")),

    }

    t.templates.Delims("[[", "]]")

    e.Renderer = t

    e.GET("/hello", Hello)

    // Middleware

    e.Use(middleware.Logger())

    e.Use(middleware.Recover())


    // Start server

    e.Logger.Fatal(e.Start(":8000"))

}


繁星淼淼
浏览 76回答 1
1回答

幕布斯7119047

你必须Delims先打电话ParseGlob。像这样:    t := &Template{         templates: template.Must(template.New("").Delims("[[", "]]").ParseGlob("public/views/*.html")),     }
打开App,查看更多内容
随时随地看视频慕课网APP