当前位置: 首页 > 面试题库 >

使用标准库可以在Go中嵌套模板吗?(Google App Engine)

魏元白
2023-03-14
问题内容

我如何在python运行时中获得类似于Jinja的嵌套模板。TBC的意思是我如何从基本模板继承一堆模板,就像在Jinja / django-
templates中那样,将基本模板中的文件归档。是否可以仅html/template在标准库中使用。

如果那是不可能的,我有什么选择。胡子似乎是一种选择,但是我会不会错过那些html/template诸如上下文相关的转义等漂亮的微妙功能?还有什么其他选择?

(环境:Google App Engin,Go runtime v1,Dev-Mac OSx lion)

谢谢阅读。


问题答案:

是的,有可能。A html.Template实际上是一组模板文件。如果执行该集中定义的块,则该块有权访问该集中定义的所有其他块。

如果您自己创建此类模板集的映射,则基本上具有Jinja / Django提供的灵活性。唯一的区别是html /
template
包无法直接访问文件系统,因此您必须自己解析和编写模板。

考虑下面的示例,其中有两个不同的页面(“ index.html”和“ other.html”)都继承自“ base.html”:

// Content of base.html:
{{define "base"}}<html>
  <head>{{template "head" .}}</head>
  <body>{{template "body" .}}</body>
</html>{{end}}

// Content of index.html:
{{define "head"}}<title>index</title>{{end}}
{{define "body"}}index{{end}}

// Content of other.html:
{{define "head"}}<title>other</title>{{end}}
{{define "body"}}other{{end}}

以及以下模板集图:

tmpl := make(map[string]*template.Template)
tmpl["index.html"] = template.Must(template.ParseFiles("index.html", "base.html"))
tmpl["other.html"] = template.Must(template.ParseFiles("other.html", "base.html"))

您现在可以通过调用来呈现“ index.html”页面

tmpl["index.html"].Execute("base", data)

您可以通过调用来呈现“ other.html”页面

tmpl["other.html"].Execute("base", data)

通过一些技巧(例如,模板文件的命名约定一致),甚至可以tmpl自动生成地图。



 类似资料:
  • Renders中间件是一个Go模板引擎的 Tango 中间件。 安装 go get github.com/tango-contrib/renders 示例 type RenderAction struct { renders.Renderer } func (x *RenderAction) Get() { x.Render("test.html", renders.T{

  • 问题内容: 我对棱角玉和玉都陌生。我想知道角度是否只能与HTML一起使用,还是可以在玉模板中使用相同的角度调用?我只看到有角度的模板与HTML一起使用,还没有在任何翡翠模板中找到它。有可能这样做吗?玉模板中的棱角看起来如何? 问题答案: 是的你可以。它看起来像:

  • 我试图重载一个乘法运算符,但不想输入多个重载函数来考虑整数与浮点、整数与双精度、浮点与整数的乘法等等。。。我希望编写一个重载运算符来解释所有带浮点数、整数和double的乘法组合,并得到正确的返回类型。我得到的错误是,没有找到接受“Widget::Widget”类型的右操作数的运算符(或者没有可接受的转换)。我想这是因为我正在使用decltype来设置返回对象小部件的模板类型。如果返回不是模板对象

  • 问题内容: 我的问题如标题中所述。我正在尝试做类似的事情: 我得到错误: 是否有其他方法可以在模板中进行模量计算? 问题答案: 添加具有所需逻辑的模板功能。例如: 游乐场的例子

  • 问题内容: 我正在使用go:generate来处理自动生成一些数据库模型的过程,希望通过来运行我的go模板,但是它会使所有额外的动态部分窒息。 我是否缺少明显的东西?我希望这是一个用例的人已经解决,给双方和是去工具链的突出部分。 显然,它可以在之后运行,但是格式化不佳的模板(占99%的代码)会让人感到肮脏。 问题答案: 大多数生成工具将模板执行到* bytes.Buffer,使用format.So

  • 我试图使用模板过滤器来运行循环,但我无法在同一个语句/模板中组合两个python语句。在模板中组合两个变量的正确方法是什么?请看下面的语法和解释: 我正在建立一个双索引的论坛,意思是,我有一个col-md-2与类别列表。每个类别都有论坛,根据点击的类别,该类别的论坛填充下一个col-md-2。剩下的col-md-8根据选择了哪个类别和哪个论坛来获取其内容。 我的逻辑: 在我的模板中,我尝试按如下方