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

  • 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}}。

beego 自定义模板函数的更多相关文章

  1. 【python】Django自定义模板函数

    参考:https://blog.csdn.net/wenyuanhai/article/details/73656761 注意: 1.自定义模板函数的路径必须为APP的templatetags下:ap ...

  2. JavaScript中作用域回顾(避免使用全局变量)(瀑布流的实现)(scroll事件)以及Django自定义模板函数回顾

    页面显示照片样式为瀑布流: 上面的div个数可以按照自己安排进行划分.img的分布可以使用模板标签以及自定义模板函数进行排布: 自定义模板函数实现可以看,最后几列:python---django中模板 ...

  3. Django自定义模板函数

    Django自定义模板函数 https://www.cnblogs.com/SunsetSunrise/p/7680491.html 在django中新建一个应用:listpage在listpage中 ...

  4. [Python自学] day-21 (1) (请求信息、html模板继承与导入、自定义模板函数、自定义分页)

    一.路由映射的参数 1.映射的一般使用 在app/urls.py中,我们定义URL与视图函数之间的映射: from django.contrib import admin from django.ur ...

  5. python---django中模板渲染(csrf令牌使用,自定义模板函数)

    使用终端,可以更方便的去实验,但是没有提示信息: 在项目目录下: D:\MyPython\day23\HelloWorld>python manage.py shell 开始实验: >&g ...

  6. [Beego] 内置的模板函数(不同格式的字符串和html的互转)

    在使用beego框架的时候,常常需要把不同形式的字符串转化为html,有时候为了安全考虑会将html转义,而有时候希望能显示html标签.在存储到db中后,再取出来的显示是原本的,即html标签不会生 ...

  7. beego——模板函数

    beego 支持用户定义模板函数,但是必须在 beego.Run() 调用之前,设置如下: func hello(in string)(out string){ out = in + "wo ...

  8. WordPress主题模板层次和常用模板函数

    首页: home.php index.php 文章页: single-{post_type}.php – 如果文章类型是videos(即视频),WordPress就会去查找single-videos. ...

  9. 自定义模板语言之simple_tag和自定义过滤器

    扩展你的模板系统 一般是扩展模板的tag和filter两个功能.可以用来创建你自己的tag和filter功能库. 创建模板库 分为两步: 1. 首先决定由模板库在哪一个注册的app下放置,你可以放在一 ...

随机推荐

  1. WCF Restful Post调用

    一.首先建立Http的服务端,此示例的寄宿体为WindowsService,以下代码仅为WCF Restful服务代码,不包括服务启动和安装代码 1.服务契约 /// <summary> ...

  2. conduit 安装试用

    备注: 测试安装环境使用docker mac 版本(目前版本已经支持kubernetes了) 1. 基本安装 curl https://run.conduit.io/install | bash 配置 ...

  3. iPhone 和 Galaxy高速拍照原理具体分析

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zoosenpin/article/details/30027263 1 原理分析 首先我们看一下An ...

  4. Oracle11g的服务

    成功安装Oracle 11g数据库后,你会发现自己电脑运行速度会变慢,配置较低的电脑甚至出现非常卡的状况,通过禁止非必须开启的Oracle服务可以提升电脑的运行速度.那么,具体该怎么做呢.按照win7 ...

  5. vi/vim显示中文字符并且去掉^M的方法

    vim上经常会碰到中文显示不正常的现象,也就是传说中的乱码.搜索了一下,在 http://www.chinalinuxpub.com/bbs/showthread.php?t=45475 找到了一个解 ...

  6. 试玩swoole扩展 第一天

    安装 pecl install swoole 部分过程: configure: creating ./config.statusconfig.status: creating config.hrunn ...

  7. TCP 、UDP、IP包的最大长度

    1.概述 首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层. 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Da ...

  8. golang回调函数的例子

    package main import "fmt" type TestStruct struct { } func (object *TestStruct) test(msg st ...

  9. C语言(C99标准)在结构体的初始化上与C++的区别

    C++中由于有构造函数的概念,所以很多时候初始化工作能够很方便地进行,而且由于C++标准库中有很多实用类(往往是类模板),现代C++能十分容易地编写. 比如现在要构造一个类Object,包含两个字段, ...

  10. linux命令ls -l的total是怎么计算出来的?

    自己手写实现ls -l命令纠结了很久的地方,刚才总算搞明白了.直接上代码重要部分 long nTotalBlocks = 0; DIR* dp = opendir(dirPathName); stru ...