t.Funcs()
Template.Must
t := template.New(“index.html”) -----创建模板
t.ParseFiles(“index.html”) ----找到其中需要替换的模板变量
t.Execute(os.StdOut,yourMapObj_or_structOjb) -------执行模板的替换
{{.UserName}} 用Struct来替换
{{.username}} 用Map来替换
定义模板
{{define "main"}}
{{range .Name}}
{{.}}
{{end}}
{{end}
5、模板继承的使用方式
type UserList struct {Id []int
Name []string
}
var templates = template.Must(template.ParseFiles("main.html")) //可能会触发解析多个文件,包括基础模板
func rootHandler(w http.ResponseWriter, r *http.Request)
{
users := UserList{
Id: []int{0, 1, 2, 3, 4, 5, 6, 7},
Name: []string{"user0", "user1", "user2", "user3", "user4"},
}
templates.ExecuteTemplate(w, "main", &users)
}
6、模板语言的样例
template/base.html
<html>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>{% block title %}{% endblock %}</title>
<head></head>
<body>
<h3>{% block headTitle %} {% endblock %}</h3>
{% block content %} {% endblock %}
{% block footer %}
<h3>嘿,这是继承了模版</h3>
{% endblock%}
</body>
</html>
template/user_info.html
{% extends "base.html" %}
{% block title %}用户信息{% endblock %}
<h3>{% block headTitle %}用户信息:{% endblock %}</h3>
{% block content %}
<p>姓名:{{name}}</p>
<p>年龄:{{age}}</p>
{% endblock %}
7、替换的原则
分为模版变量(block content)和模版标签(block title)
{% block content %} {% endblock %}
block就是关键字,后面才是变量名,block表示代码块的意思
派生的模版替覆盖base模版中的模版标签
派生的模版替换base模版中的模版变量