使用Golang模板,如何在每个模板中设置变量?

达齐克

如何在每个模板中设置可以在其他模板中使用的变量,例如

{{ set title "Title" }}

在一个模板中,然后在我的布局中

<title> {{ title }} </title>

然后在渲染时

tmpl, _ := template.ParseFiles("layout.html", "home.html")

它将根据设置的内容来设置标题,home.html而不必在struct没有必要时为每个视图页面制作一个标题我希望我有道理,谢谢。

只是为了澄清:

layout.html:
<!DOCTYPE html>
<html>
  <head>
    <title>{{ title }} </title>
  </head>
  <body>

  </body>
</html>

home.html:
{{ set Title "Home" . }}
<h1> {{ Title }} Page </h1>
斯顿

如果要在另一个模板中使用“值”,则可以将其通过管道传递到点:

{{with $title := "SomeTitle"}}
{{$title}} <--prints the value on the page
{{template "body" .}}
{{end}}

正文模板:

{{define "body"}}
<h1>{{.}}</h1> <--prints "SomeTitle" again
{{end}}

据我所知,不可能在链条中上行。因此layout.html在之前渲染home.html,因此您不能将值传递回去。

在您的例子这将是使用结构,并通过它从最好的解决方案layout.html中,以home.html使用dot

main.go

package main

import (
    "html/template"
    "net/http"
)

type WebData struct {
    Title string
}

func homeHandler(w http.ResponseWriter, r *http.Request) {
    tmpl, _ := template.ParseFiles("layout.html", "home.html")
    wd := WebData{
        Title: "Home",
    }
    tmpl.Execute(w, &wd)
}

func pageHandler(w http.ResponseWriter, r *http.Request) {
    tmpl, _ := template.ParseFiles("layout.html", "page.html")
    wd := WebData{
        Title: "Page",
    }
    tmpl.Execute(w, &wd)
}

func main() {
    http.HandleFunc("/home", homeHandler)
    http.HandleFunc("/page", pageHandler)
    http.ListenAndServe(":8080", nil)
}

layout.html

<!DOCTYPE html>
<html>
  <head>
    <title>{{.Title}} </title>
  </head>
  <body>
    {{template "body" .}}
  </body>
</html>

home.html

{{define "body"}}
<h1>home.html {{.Title}}</h1>
{{end}}

page.html

{{define "body"}}
<h1>page.html {{.Title}}</h1>
{{end}}

还可以找到有关如何使用模板的不错的文档:

http://golang.org/pkg/text/template/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在模板中调用模板?

来自分类Dev

如何在dijit模板中设置相对路径?

来自分类Dev

如何在树枝模板中设置数组值

来自分类Dev

如何从模板中的变量处理freemarker模板?

来自分类Dev

Golang模板:如何在变量中定义数组?

来自分类Dev

如何使用Revel / Golang从控制器设置持久性全局模板变量

来自分类Dev

如何在夹层多租户中启用每个站点的模板

来自分类Dev

如何在golang模板中使用除法?

来自分类Dev

如何在angularjs模板中设置范围变量值

来自分类Dev

如何在Django的Latex模板中正确设置变量

来自分类Dev

Golang中的变量内部定义模板

来自分类Dev

Laravel 5.2:如何在没有php标签的刀片模板中设置变量?

来自分类Dev

如何在Symfony中的PHPunit测试中访问模板变量

来自分类Dev

如何在Golang模板中打印换行?

来自分类Dev

如何在ejs模板的内容中设置字符限制

来自分类Dev

如何在Flask HTML模板中设置变量值

来自分类Dev

如何在模板Angular中增加变量?

来自分类Dev

如何在模板厨师中为每个循环运行

来自分类Dev

使用ASP MVC 6,如何在每个页面模板中获取一个变量集?

来自分类Dev

如何在angularjs模板中设置范围变量值

来自分类Dev

如何在厨师模板中设置变量?

来自分类Dev

如何在bean模板中使用变量

来自分类Dev

如何在模板中引用模板?

来自分类Dev

在 Ansible 中,如何在模板的清单文件中使用变量

来自分类Dev

如何在模板中设置上下文变量

来自分类Dev

如何在正则表达式中设置变量模板?

来自分类Dev

如何在模板文字中使用变量?

来自分类Dev

如何在模板 Django 中增加变量

来自分类Dev

使用 Python 请求在模板中设置 mailgun 变量

Related 相关文章

热门标签

归档