go - 在 Golang 中通过模板解析自定义变量

标签 go go-templates template-variables

我是否可以在模板文件 {{$title := "Login"}} 中设置一个变量,然后使用 {{template "将其解析为另一个包含的文件 header ".}}?

我正在尝试的示例:

header.tmpl

{{define "header"}}
<title>{{.title}}</title>
{{end}}

登录.tmpl

{{define "login"}}
<html>
    <head>
        {{$title := "Login"}}
        {{template "header" .}}
    </head>
    <body>
        Login Body!
    </body>
</html>
{{end}}

如何解析我通过标题模板创建的自定义 $title 变量?

最佳答案

正如@zzn 所说,不可能从一个模板中引用另一个模板中的变量。

实现您想要的目标的一种方法是定义一个模板——它将从一个模板传递到另一个模板。

header.html {{define "header"}} <title>{{template "title"}}</title> {{end}}

登录.html {{define "title"}}Login{{end}} {{define "login"}} <html> <head> {{template "header" .}} </head> <body> Login Body! </body> </html> {{end}}

当您调用“标题”模板({{template header $title}} 或什至 {{template header "index"}})时,您也可以将标题作为管道传递,但这会阻止您向该模板传递任何其他内容。

关于go - 在 Golang 中通过模板解析自定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43883110/

相关文章:

go - 在debian armv7l上安装Go的最新版本[保留]

go - 这三种创建DIY构造的方式有什么区别? [复制]

go - 将映射转换为结构

go - 如何在 golang 模板上打印 JSON?

Golang 模板 - 使用模板变量作为范围循环内的全局变量

git - 在 Github repo 的子目录中安装 golang 库

go - 在 golang 模板之间共享变量

go - 在 Go 模板范围循环中,是否在每次迭代时重置循环外声明的变量?

使用自定义双括号格式的 Python 模板安全替换

c++ - 成员模板变量特化