templates - 在 Go 模板中请求上下文

标签 templates go

我想在 Go 中编写这样一个条件片段 HTML template :

  {{if isUserAdmin}}
     <a href"/admin/nuke">Go to the big red nuclear button</a>
  {{end}}

但是,这不是直接可能的,因为模板不知道 request触发了它的执行,所以它无法确定用户是否是管理员。

是否有一些正常的方法可以实现这一点?

我提前指出:

  • 我不想使用 Pipelines对于此特定数据(请参阅 other question 关于此)
  • 我承认只有处理程序/ Controller 应该处理逻辑,而 View 应该只进行渲染。但是条件 {{if isUserAdmin}} 本身并不是逻辑,它是利用 Controller 已经计算出的 bool 值的必要结构。
  • Funcs方法可以提供帮助,但目前还不够精简,无法轻松定义特定方法 isUserAdmin()

最佳答案

我同意 Darshan Computing 的观点,我认为从请求中传递信息的正确方法将在管道中。您可以将数据在要呈现的数据和上下文之间进行拆分,例如如果您想清楚地将两者分开,可以通过让您的模板数据结构嵌入它们:

type TemplateData struct {
    *Content
    *Context
}

这给出了 this例如。然后,您可以根据共享的内容和特定于查询的内容重用一些上下文/内容信息。

关于templates - 在 Go 模板中请求上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18302853/

相关文章:

c++ - 具有模板化类的通用引用

database - Golang gorm mock

visual-studio - 如何使用 VSCode 在 GOARCH=386 的 64 位 GO 项目上使用 32 位 DLL

C++ 模板 ByRef 与 ByVal

javascript - 如何使用模板中的 Knockout 映射插件映射到来自服务器对象的数组?

amazon-web-services - 使用 Golang 从 Lambda 调用 AppSync Mutation

go - 如何关闭来自另一个 goroutine 的读取 TCP 连接?

go - 比较 float64 值和常量

c++ - 为什么模板参数推导在这里不起作用?

c++ - 使用指向成员的指针进行通用访问