zoukankan      html  css  js  c++  java
  • beego 自定义模板函数

    beego支持的模板函数不是很多,有时候前端展现数据的时候,要对数据进行格式化,所以要用到自定义模板函数

    比如我的前端模板上有时间和模板大小这2个数据,原始数据都是int的时间戳和byte单位的数据,我们要更友好的展示这些数据,就要对这些数据进行格式化

    效果是这样的,可以看到时间和大小这2列已经是友好的显示方式

    beego

    前端模板中代码是这样的

    <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 没有成功,所以使用了自定义函数

    • dateformat实现了时间的格式化,返回字符串,使用方法 {{dateformat .Time “2006-01-02T15:04:05Z07:00”}}。
    • date实现了类似 PHP 的 date 函数,可以很方便的根据字符串返回时间,使用方法 {{date .T “Y-m-d H:i:s”}}。
    • compare实现了比较两个对象的比较,如果相同返回 true,否者 false,使用方法 {{compare .A .B}}。
    • substr实现了字符串的截取,支持中文截取的完美截取,使用方法 {{substr .Str 0 30}}。
    • html2str实现了把 html 转化为字符串,剔除一些 script、css 之类的元素,返回纯文本信息,使用方法 {{html2str .Htmlinfo}}。
    • str2html实现了把相应的字符串当作 HTML 来输出,不转义,使用方法 {{str2html .Strhtml}}。
    • htmlquote实现了基本的 html 字符转义,使用方法 {{htmlquote .quote}}。
    • htmlunquote实现了基本的反转移字符,使用方法 {{htmlunquote .unquote}}。
    • renderform根据 StructTag 直接生成对应的表单,使用方法 {{&struct | renderform}}。
  • 相关阅读:
    Debian常用操作
    debian-11.0.0-amd64
    CentOS-8.4.2105-x86_64
    第20章: 二进制方式部署K8S1.20高可用集群
    天狮集团云函数实践:自定义业务逻辑实现跨境电商全球直播
    峰值利用率80%+,视频云离线转码自研上云TKE实践
    腾讯首个CNCF沙箱开源项目
    斗鱼直播云原生实践之注册中心篇
    Superedge的新特性和未来之路
    腾讯云与 Grafana Labs 达成深度合作, 推出全新 Grafana 托管服务
  • 原文地址:https://www.cnblogs.com/mhc-fly/p/7894462.html
Copyright © 2011-2022 走看看