beego基础--模板语法
beego基础--模板语法
1.常用模板字符
2.自定义模板函数
这一部分比较简单,直接查网上的文档就好了,不做细讲
views/v_template.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>beego基础-模板使用</title>
</head>
<body>
<!--
. 当前位置上下文
$ 当前模板上下文
$.模板中根级上下文
-->
<p>
<!-- .:controller/c_template.go -->
{{.Name}}
</p>
<p>
<!-- $: 当前html -->
{{range $k,$v :=.Slice}}
{{$k}}:{{$v}}<br>
<!-- .:当前循环 -->
<!-- { {.Name} } 报错找不到 -->
{{end}}
</p>
<p>
{{range $k,$v :=.Slice}}
{{$k}}:{{$v}}<br>
{{$.Name}}<br>
{{end}}
</p>
<p>
<!-- 这个教程没讲清楚,大概意思是从后端传过来的才有效
猜应该是假如从后端传 一个 html页面过来,
要想直接输出代码的话要用 { {``} }
-->
<!-- 转义字符串 -->
{{""}}
<!-- 原始字符串 -->
{{``}}
<!-- 打印ascii码 -->
{{'a'}}
<!-- 打印nil,直接{ {nil} } 会报错 -->
{{print nil}}
</p>
<p>
{{range .Arr}}
<!--当循环为空 -->
{{else}}
{{print nil}}
{{end}}
</p>
<p>
<!-- 修改controller传递过来的bool -->
{{if .bFlag}}
{{print true}}
{{else}}
{{print false}}
{{end}}
<!--
eq: arg1 == arg2
ne: arg1 != arg2
lt: arg1 < arg2
le: arg1 <= arg2
gt: arg1 > arg2
ge: arg1 >= arg2
-->
</p>
<p>
<!--
引用其他 html
若要引用后端数据,要传递当前上下文
-->
{{template "v_template_test.html" .}}
</p>
<p>
<!--
只要一个为空,则返回为空
若都不为空,返回最后一个
-->
{{and .x .y .z}}
<!--
只要有一个不为空,返回第一个不为空的值
-->
{{or .x .y .z}}
</p>
<p>
<!--
index 支持 map, slice, array, string,
读取指定下标的值
-->
{{index .Map "num1"}}
{{index .Map 2}}
<br>
</p>
<p>
<!-- len:返回某个类型长度 -->
{{.Map|len}} -- {{len .Map}}
<!-- not:否定 -->
{{not false}}
</p>
<p>
<!--
内置模板函数
{ {date 格式化时间} }
{ {compare 是否相等} }
{ {substr 截取字符串} }
{ {map_get 获取map 指定的key} }
{ {urlfor 获取路由名称} }
-->
{{date .CurTime "Y-m-d H:i:s"}}--
{{compare 'a' 97}}--
{{substr "12345" 0 2}}--
{{map_get .Map "num1"}}--
{{urlfor "TemplateController.Get"}}
</p>
<p>
<!-- 自定义模板函数 -->
{{PrintTemplate "JOJO"}}
</p>
</body>
</html>
controllers/c_template.go
package controllers
import (
"time"
"github.com/astaxie/beego"
)
type TemplateController struct {
beego.Controller
}
//自定义模板函数
//1.beego.run() 前添加
//beego.AddFuncMap("PrintTemplate", controllers.PrintTemplate)
func PrintTemplate(s string) string {
return "hello" + " " + s
}
func (c_template *TemplateController) Get() {
c_template.TplName = "v_template.html"
c_template.Data["Name"] = "JOJO"
c_template.Data["Slice"] = []interface{}{"1", 2, 3, 4, 5}
c_template.Data["bFlag"] = true
c_template.Data["x"] = "3"
c_template.Data["z"] = "4"
c_template.Data["y"] = "5"
c_template.Data["Map"] = map[interface{}]interface{}{
"num1": "1",
2: 2,
"num3": 3,
"num4": 4,
}
c_template.Data["CurTime"] = time.Now()
}
func (c_template *TemplateController) Post() {
}
main.go
package main
import (
"blog/controllers"
_ "blog/routers"
"github.com/astaxie/beego"
)
func main() {
beego.AddFuncMap("PrintTemplate", controllers.PrintTemplate)
beego.Run()
}

浙公网安备 33010602011771号