是否可以使用标准库在 Go 中嵌套模板?

2023-12-14

如何在 python 运行时中获取像 Jinja 那样的嵌套模板。 TBC 我的意思是如何让一堆模板从基本模板继承,只需归档基本模板块,就像 Jinja/django-templates 所做的那样。是否可以只使用html/template在标准库中。

如果这不可能,我的选择是什么?小胡子似乎是一个选择,但我会错过那些美好的微妙特征吗?html/template像上下文敏感的转义等?还有哪些其他选择?

(环境:Google App Engine、Go 运行时 v1、开发 - Mac OS x lion)

谢谢阅读。


对的,这是可能的。 Ahtml.Template实际上是一组模板文件。如果执行此集中定义的块,它可以访问此集中定义的所有其他块。

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

考虑以下示例,其中包含两个继承自“base.html”的不同页面(“index.html”和“other.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自动映射。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以使用标准库在 Go 中嵌套模板? 的相关文章

随机推荐

  • JVM 规范中引用大小的混乱

    JVM 规范规定引用仅占用一个局部变量槽 jvms12 2 6 1 此外它还指出double and long 占用两个局部变量槽 因为它们是 64 位的 这是否意味着所有 JVM 兼容的实现都必须使用 32 位寻址 64 位 JVM 如何
  • Ruby/Rails 哈希火箭语法 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 有人能给我指点一本很好的入门书来解释 Ruby Rails 中的不同语法特征吗 例如 为什么我看到的一些例子是这样的myMethod x z 和其他人一样myMethod x gt
  • Android webView在后台加载

    我有一个应用程序 我想打开网络视图 现在我正在以最简单的方式加载网络视图 我想在后台加载网页 这样用户就不会有等待时间 可能在后台运行的服务或先前的活动中 我浏览了论坛 找不到该主题的参考 将给予帮助 谢谢 您可以将 Web 视图的可见性设
  • 为什么 http.Request 参数必须是指针?

    package main import net http func main http HandleFunc func w http ResponseWriter r http Request w Write byte hello worl
  • 具有选择性属性突出显示的语法荧光笔 - VS Addin

    是否有任何 VS 添加用于突出显示整个代码中的特定代码块或属性 谢谢 皮尤什 是的 有件事可以帮助你 视觉辅助X加载项来自http www wholetomato com 它有很多功能 包括突出显示光标下的符号 如果我正确理解你的问题
  • WSDL 或 wsimport 和 wsdl (mono) 都严重损坏

    EDIT我从下面给出的示例开始 但现在我有了 尝试了 W3C 规范中的示例 修复另一个错误后 绑定被称为StockQuoteSoapBinding在一个地方 StockQuoteBinding在另一篇文章中 它给出了同样的问题 尝试过单声道
  • NSArray 等价于 Map

    给定一个NSArray of NSDictionary对象 包含类似的对象和键 是否可以编写执行映射到指定键的数组 例如 在 Ruby 中可以通过以下方式完成 array map name 它只节省了几行 但我在 NSArray 上使用了一
  • 难以理解脚本中的参数替换

    我试图理解 bashscript其前四行是 bin sh SCRIPT basename 0 sed s CONFIG 1 HOME SCRIPT DIR 2 HOME Documents 我知道最后两行正在对作为脚本参数 1 和 2 输入
  • Kivy Apk Buildozer:ReferenceError:弱引用对象不再存在

    谁能告诉我为什么我的应用程序崩溃了 很奇怪的是 当我第一次运行我的应用程序时 它没有崩溃 但下次我运行它时它会崩溃 我得到这样的东西 我正在使用 KIVYMD KIVY SOCKET KIVY MAPVIEW SQLITE3 下面是我通过
  • 将Holoeverywhere添加到Android Studio中的项目中

    我是 Gradle 和 Android Studio 基于 Intellij Idea 的 IDE 的新手 我的问题是纠正导入 Holoeverywhere 到项目 我读了很多类似的主题 但他们没有给出我的问题的解决方案 类似主题 Andr
  • 图像在悬停时移动 - 铬不透明度问题

    我的页面似乎有问题 http www lonewulf eu 当鼠标悬停在缩略图上时 图像会向右移动一点 并且这种情况仅发生在 Chrome 上 My css img ms filter progid DXImageTransform Mi
  • 没有 cookie 的 Laravel 会话

    我有一个应用程序 允许用户登录并将商品添加到购物篮 但是如果用户关闭了 cookie 则此功能将不再起作用 我检查过 Facebook 结果发现他们也需要启用 cookie 才能正常工作 所以我的问题是 是否可以在没有 cookie 的情况
  • 验证 Firebase 键是否为整数

    这是数据库架构 规则如下 notifications year read false write data exists month read false write data exists day read false write dat
  • 仅根据索引计算第 N 个多重集组合(具有重复)

    我怎样才能仅根据它的索引来计算第 N 个组合 应该有 n k 1 k n 1 种重复组合 with n 2 k 5 you get 0 0 0 0 0 0 1 0 0 0 0 1 2 0 0 0 1 1 3 0 0 1 1 1 4 0 1
  • 构建后事件执行 PowerShell

    是否可以使用构建后事件设置 NET 项目来执行 powershell 脚本 我正在使用这个脚本来生成一些文件 我还可以将它是调试版本还是发布版本传递给脚本 举一个这样的例子就太好了 这是一个例子 首先 您必须意识到必须配置 PowerShe
  • 检查卸载前是否保存了更改

    我有以下 JavaScript 编辑 包含更改已保存的分配 var changesSaved true document ready function applyChanges click function e e preventDefau
  • HttpClient 正在发送额外的 cookie

    运行 UWP 应用 所以我有一个 HttpClient 及其关联的处理程序 我正在向网站发出请求 传入指定的标头 并使用指定的 CookieContainer 该 CookieContainer 在请求开始时为空 当我发送请求时 Fiddl
  • 如何抑制Spyder编辑器中的某个警告?

    在我输入该行后 Spyder 中的编辑器总是立即向我发出有关未使用的导入 变量的警告 我想抑制这样的警告 我怎么做 我希望我在 Spyder 编辑器中打开的每个文件都发生这种情况 不喜欢本地修复 我尝试添加 disable pylintrc
  • 设置名称时抛出异常

    我在设置名称时遇到强制转换异常 Object customers customerRepository getCustomerName Id Customer row new Customer row setName String cust
  • 是否可以使用标准库在 Go 中嵌套模板?

    如何在 python 运行时中获取像 Jinja 那样的嵌套模板 TBC 我的意思是如何让一堆模板从基本模板继承 只需归档基本模板块 就像 Jinja django templates 所做的那样 是否可以只使用html template在