是否可以使用标准库在 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 中嵌套模板? 的相关文章

  • 如何从 golang fyne 容器中删除对象

    我正在开发 GUI 应用程序 需要动态添加和删除 gui 元素 我想知道是否有办法从 golang fyne 容器中删除元素 在下面的示例代码中 我创建了容器并动态添加元素 现在我希望能够删除这些元素而不是隐藏它们 我尝试的一个 解决方案
  • 记录 http.ResponseWriter 内容

    Premise 我发现了类似的问题 但不适用于我的情况 因此请不要将其标记为重复 我在 Go 中有一个 HTTP 服务器 并且创建了一个中间件记录请求 响应时间 我也想记录响应 我用过httputil DumpRequest在一个名为的函数
  • 命名和未命名类型

    问题 我最近开始阅读Golang规格手册 https golang org ref spec并陷入试图理解的困境有名和无名类型在相关部分 https golang org ref spec Types 我来自动态语言 这让我有点头疼 手册指
  • 是否可以在 Golang 中 pickle 结构实例

    我正在 Golang 中做一些机器学习 我现在碰壁了 我训练有素的分类器需要将近半分钟的时间来训练 并且想要保存分类器的该实例 这样我就不必每次都从头开始训练 在 Golang 中应该如何去做呢 仅供参考 我的分类器是一个结构 当我用 py
  • 无法将字符串解组为 int64 类型的 Go 值

    我有结构 type tySurvey struct Id int64 json id omitempty Name string json name omitempty I do json Marshal在 HTML 页面中写入 JSON
  • 如何使用 go web 服务器提供静态 html 文件?

    如何使用 go web 服务器提供 index html 或其他静态 HTML 文件 我只想要一个基本的静态 HTML 文件 例如一篇文章 我可以从 Go Web 服务器提供该文件 HTML 应该可以在 go 程序之外进行修改 就像使用 H
  • Golang、mysql:错误1040:连接过多

    我正在使用 github com go sql driver mysql 驱动程序 我打开一个数据库 db err sql Open mysql str 然后我有两个函数 每个函数被调用 200 次 并使用以下 mysql 代码 rows
  • java.lang.NoSuchMethodError:com.fasterxml.jackson.databind.type。使用 apache beam Spark runner 运行 go 示例时

    我想跑grades https github com apache beam tree master sdks go examples gradesapache beam go sdk 提出的示例 在一个主服务器和两个从服务器 spark2
  • 无法理解 5.6.1。注意事项:捕获迭代变量

    我正在学习 Go 但无法理解 var rmdirs func for dir range tempDirs os MkdirAll dir 0755 rmdirs append rmdirs func os RemoveAll dir NO
  • vscode 中的调试不会在断点处停止,调试器启动时显示“无法找到文件...”

    乌班图 vscode 1 62 1 去1 17 3 vscode go 扩展 v0 29 0 深入研究 v1 7 1 我是 vscode 和 Go 的新手 我有多年在 Eclipse 中调试 Java 应用程序的经验 我构建了一个小型多模块
  • Go API 在 html 中显示 swagger api 规范 (json) (Swagger UI)

    我有一个服务于特定端口的应用程序 gorilla mux 我也有一个 json 文件形式的 swagger API 规范 是否有任何 go API 可以像 spring boot 一样从 JSON 文件生成 swagger UI 定义 我正
  • 取消用户特定的 goroutine [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个应用程序 网络应用程序 允许用户使用 twitter oauth 登录并提供自动推文删除功能 用户登录到 Web 应用程序后
  • 给定方法值,获取接收者对象

    Go 有没有办法从方法值获取接收者对象 例如有没有这样的MagicFunc这将使以下程序输出字符串my info来自底层 Foo 实例 package main import fmt type Foo struct A string fun
  • Go 中的 WebP 编码器/解码器

    是否有一个完整的 WebP 编码器和解码器与当前每周 或可分叉 兼容 它的速度与标准 png 相当吗 这个人在 GitHub 上有一个包 其中包含 WebP 的编码器和解码器 https github com chai2010 webp h
  • 无法通过键获取 Gorilla 会话值

    我无法通过这种方式从会话中获取价值 它是nil session initSession r valWithOutType session Values key 完整代码 package main import fmt github com
  • 在 IntelliJ IDEA 中运行。多个文件和错误未定义:数据

    我想使用 IntelliJ IDE 社区版编写代码GO Go语言 我安装了正确的插件 并安装了构建应用程序所需的所有工具 我的应用程序包含以下两个文件 每个都在目录中 事件服务器 Main go Data go 如果我想使用 Run Ctl
  • 如何在C#中执行Go函数

    有没有办法从 C 执行 Go 函数 例如 对于 Python 我会使用 Ironpython 我知道我可以生成一个进程来执行 Go 脚本 但如果可能的话 我真的不想回退到这样的解决方案 Google 搜索没有显示任何内容 那么有什么方法可以
  • 完全删除使用“go get”安装的软件包?

    我正在使用 Go 1 13 1 最新版本 我正在尝试完全删除我安装的软件包go get来自 GitHub 这go clean i
  • 在处理程序之后访问 HTTP 请求上下文

    在我的日志记录中间件 链中的第一个 中 我需要访问一些在链下游的某些身份验证中间件中编写的上下文 并且仅在处理程序本身执行之后 旁注 需要首先调用日志记录中间件 因为我需要记录请求的持续时间 包括在中间件中花费的时间 此外 当权限不足时 身
  • 在golang中获取TTFB(第一个字节的时间)值

    我正在尝试获取 TTFB 值和 Connect 值 c exec Command curl w Connect time connect TTFB time starttransfer Total time time total o dev

随机推荐

  • 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在