beego支持的模板函数不是很多,有时候前端展现数据的时候,要对数据进行格式化,所以要用到自定义模板函数
比如我的前端模板上有时间和模板大小这2个数据,原始数据都是int的时间戳和byte单位的数据,我们要更友好的展示这些数据,就要对这些数据进行格式化
效果是这样的,可以看到时间和大小这2列已经是友好的显示方式
前端模板中代码是这样的
<td> {{substr $v.ID 0 12}} </td> <td> {{$v.RepoTags}} </td> <td> {{$v.Created | convertt}} </td> <td> {{$v.VirtualSize | convertm}} M </td>
分别通过convertt和convertm这2个函数进行数据转换,注意:必须在 beego.Run()
调用之前
package main import ( _ "DockerAdmin/models" _ "DockerAdmin/routers" "fmt" "github.com/astaxie/beego" "time" ) func convertM(in int64) (out int64) { out = in / 1000000 return } func convertT(in int64) (out string) { tm := time.Unix(in, 0) out = tm.Format("2006-01-02 03:04:05 PM") return } func main() { beego.AddFuncMap("convertm", convertM) beego.AddFuncMap("convertt", convertT) beego.Run() }
你可能会好奇,为什么格式字符串的时候,用的是2006-01-02这种格式。其实在Go语言里,这些数字都是有特殊函义的,不是随便指定的数字,见下面列表:
月份 1,01,Jan,January
日 2,02,_2
时 3,03,15,PM,pm,AM,am
分 4,04
秒 5,05
年 06,2006
周几 Mon,Monday
时区时差表示 -07,-0700,Z0700,Z07:00,-07:00,MST
时区字母缩写 MST
当然beego还是有一些内置模板函数的,我用dateformat 没有成功,所以使用了自定义函数