嵌套模板路径作为变量

huangapple go评论83阅读模式
英文:

Go Nested Template path as a variable

问题

这真的很简单,但我是一个Go新手,似乎找不到关于如何在嵌套/关联的模板函数中使用变量插值的文档。

这是我尝试从中包含"/path/to/backend.txt"的file.tmpl文件。

blah
{{template $.Backends .}}
blah

在上面的代码中,变量$Backends存在并且是一个字符串,例如"/path/to/backends.txt"。我希望能够简单地将其插入模板函数中,但是Go对此并不满意。会抛出unexpected "$" in template clause的错误。

对于如何完成这个操作,是否需要转义,或者我完全滥用了整个模板,你有什么建议吗?

谢谢。

英文:

This is really simple, but I'm a Go newb and I can't seem to find the documentation for how I might use a variable interpolation in an nested / associated template function.

Here's the file.tmpl I'm trying to include "/path/to/backend.txt" from.

blah
{{template $.Backends .}}
blah

In the above, the variable $Backends exists and is a string eg. "/path/to/backends.txt". I'm hoping to simply interpolate it into the template function, but Go is not happy with it. Throwing unexpected "$" in template clause.

Any suggestions on how this is done, escaped, or am I totally abusing the whole template like this?

Thanks.

答案1

得分: 4

“template”的参数不能是一个变量。请注意,“template”不是一个函数,而是一个模板操作。因此,你只能使用常量来实例化一个模板。

不允许使用变量的一个原因是出于安全考虑。如果允许使用变量,那么一个存在漏洞的应用程序将允许将文件系统中的随机文件包含在渲染的模板主体中。

英文:

The argument to "template" cannot be a variable. Note that "template" is not a function, but a template action. So you can only use a constant to instantiate a template.

One reason this is not allowed is security. If a variable was allowed, a vulnerable application would allow random files on the file system to be included in the rendered template body.

huangapple
  • 本文由 发表于 2021年9月14日 07:58:33
  • 转载请务必保留本文链接:https://go.coder-hub.com/69170288.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定