gpt4 book ai didi

go - 插入模板名称作为类

转载 作者:数据小太阳 更新时间:2023-10-29 03:23:31 24 4
gpt4 key购买 nike

创建 Go 模板时,您可以为其命名,如本例中的“my_home_template”:

var tmplHome = template.Must(template.New("my_home_template").Funcs(funcMap).ParseFiles("templates/base.tmpl", "templates/content_home.tmpl"))

如何获取该模板名称并在实际模板文件中使用它?

最终我只想定义一个方便的 css 类,像这样:

<body class="my_home_template">

最佳答案

这是一个可行的解决方案,采纳了 mkopriva 的建议:

执行模板时,传递一些带有虚拟数据的自定义参数。在这里,我只是创建一个“PageHome”参数传递给模板,值是一个简单的“1”,但它可以是任何值:

tmplHome.ExecuteTemplate(w, "base", map[string]interface{}{"PageHome": "1", "Data": events, "UserFirstName": &u.FirstName, "UserProfilePic": &u.ProfilePic})

然后,在模板内部,一个简单的 if 语句来检查参数是否存在,并相应地做一些事情:

{{ if .PageHome }}
<body class="PageHome">
{{ else }}
<body>
{{ end }}

我的所有其他模板执行根本不传递“PageHome”参数,因此 if 语句永远不会传递给它们。

可能有更高级的解决方案,通过模板函数映射使用函数,并在所有模板执行中具有一致的 "PageType":"something"参数,但最后您仍然必须为每个模板执行定义一个参数,并且无论如何,仍然必须在模板中构建 if 语句。

关于go - 插入模板名称作为类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48773904/

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