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()
}

posted @   blackTree  阅读(141)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示