beego 框架自定义模板函数

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

时间: 2024-12-10 19:08:32

beego 框架自定义模板函数的相关文章

Database2Sharp版本更新之自定义模板生成

代码生成工具一直是很多从事开发人员的必备,一般开发人员都会选择一款高效.适合自己开发模式的代码生成工具,我也不例外,我一直让我的Database2Sharp(http://www.iqidi.com/database2sharp.htm)代码生成工具围绕我的开发框架来生成代码,至今已经经过快7个年头的洗礼,主要是提供高效.快速的一键生成整个项目框架源码的操作. 代码生成工具Database2Sharp自一开始,就采用基于模板方式的代码生成方式,这样提高生成效率,并且减少维护成本(相对某些硬编码代

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

WordPress 是目前世界上使用最广泛的博客系统,是一款开源的PHP软件.因为使用者众多,所以WordPress社区非常活跃,有丰富的插件模板资源.使用WordPress可以快速搭建独立的博客网站.很多知名科技博客也是WordPress搭建的,例如:雷锋网.钛媒体等.下面PHP站为WordPress主题开发者整理了一下制作WordPress主题的必备知识.WordPress主题模板层次首页: home.php index.php 文章页: single-{post_type}.php – 如

Django 博客开发教程 10 - 页面侧边栏:使用自定义模板标签

我们的博客侧边栏有四项内容:最新文章.归档.分类和标签云.这些内容相对比较固定,且在各个页面都会显示,如果像文章列表或者文章详情一样,从视图函数中获取然后传递给模板,则每个页面对应的视图函数里都要写一段获取这些内容的代码,这会导致很多重复代码.更好的解决方案是直接在模板中获取,为此,我们使用 Django 的一个新技术:自定义模板标签来完成任务. 使用模板标签的解决思路 我们前面已经接触过一些 Django 内置的模板标签,比如比较简单的 {% static %} 模板标签,这个标签帮助我们在模

深入浅析yii2-gii自定义模板的方法_php实例

前言: Yii 是什么 Yii 是一个高性能,基于组件的 PHP 框架,用于快速开发现代 Web 应用程序.名字 Yii (读作 `易`)在中文里有 "极致简单与不断演变" 两重含义,也可看作 **Yes It Is**! 的缩写. Yii 最适合做什么? Yii 是一个通用的 Web 编程框架,即可以用于开发各种基于 PHP 的 Web 应用.因为基于组件的框架结构和设计精巧的缓存支持,Yii 特别适合开发大型应用,如门户网站.论坛.内容管理系统(CMS).电子商务项目和 RESTf

yii,CI,yaf框架+smarty模板使用方法_php实例

本文实例讲述了yii,CI,yaf框架+smarty模板使用方法.分享给大家供大家参考,具体如下: 最近折腾了框架的性能测试,其中需要测试各个模板跟smarty配合的性能,所以折腾了一桶,现总结一下.之前已经写过kohana框架+smarty模板,这里不再重复了. 一.yii框架+smarty模板 yii是覆盖了viewRenderer组件. 1.1,下载yii框架并解压,下载smarty框架并解压,将smarty/libs文件夹拷到yii框架application/protected/vend

JS上传组件FileUpload自定义模板的使用方法_javascript技巧

FileUpload 是国外一个纯javascript 写的大文件上传组件,该组件支持分片上传,断点续传,多文件等功能. 下面就为大家分享FileUpload上传组件自定义模板(FineUploaderBasic)的使用方法: 以下是配置代码: 前端配置: <!--定义按钮--> <div id="basic_uploader_fine"><i class="icon-upload icon-white"></i>选择

js自定义回调函数_javascript技巧

背景分析 首先看一段js的代码,主要实现添加的时候首先通过异步请求判断是否存在,如果不存在的话,在进行添加操作: function add(url,data) { var isExited = isExited(data); if(!isExited){ addRequest(url, data); } } 当我添加一个数据的时候,我首先通过判断是否在数据库中存在(当然,如果前后台彻底分离的话,不应该前端进行业务逻辑的判断,前端只应该,用来展示数据),首先,isExited()的请求是ajax请

c++ 模板-模板函数冒泡排序的形参size是什么

问题描述 模板函数冒泡排序的形参size是什么 template void bubbleSort(T(&arr)[size]) { if (NULL == arr) return; if (0 >= size) return; int i = 0; int j = 0; T temp; for (; i < size - 1; i++) { for (j = 0; j < size - 1 - i; j++) { if (arr[j]>arr[j + 1]) temp =

16个HTML5 框架、模板以及生成工具

  网页设计通常需要预先考虑很多因素,而用户给你的时间又特别稀缺,如何提高效率其实是一个比较烦人的问题.一个可行方式就是使用预先准备好的框架和模板,HTML5框架.模板以及生成器是一个万灵丹似的解决方案,可以大大简化很多工作量.这里介绍一些比较实用的工具,不用介绍太多,看下面截图自然就明白. Initializr Modernizr 52framework HTML5 Boilerplate HTML5 Front End Development Framework reformed Form