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()
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗