revel使用Go官方的模板库。它会在两个目录查找模板文件:

1、应用的`views`目录以及它的所有子目录

2、revel库自己的`templates`目录

revel为错误页面提供了模板(在`dev`开发模式下,编译错误会更友好的显示),但是,如果用相同的名字创建一个模板,revel则会优先使用自己开发的模板。如 `app/views/errors/500.html`

##渲染内容

revel使用`RenderArgs`数据map来执行模板。除了从应用提供数据,revel也提供了:

1、“errors”, 从`Validation.ErrorMap`返回的错误信息

2、“flash”, 上一个请求携带的flash信息

##模板函数

Go本身为模板提供了一些函数方便我们使用。revel也添加了一些实用的函数:

**eq**

类似`a == b`的条件判断:

**set**

在当前作用域设置一个变量:

{{set . "title" "Basic Chat room"}}

{{.title}}

**append**

将一个给定的值添加至数组/切片,如果数组/切片不存在,则新建一个。

{{append . "moreScripts" "js/jquery-ui-1.7.2.custom.min.js"}}

{{range .moreStyles}}

{{end}}

**field**

对Input表单字段进行操作。

给定一个字段名称,它将返回一个包含下列成员的struct:

`Id`: 字段名,会转换为恰当的`HTML id`元素

`Name`: 字段名

`Value`: `RenderArgs`中当前字段的值

`Flash`: 当前字段的flash信息

`Error`: 任何一个与当前字段有关的错误信息

`ErrorClass`: `hasError`的原始信息,如果不存在则为空字符串

{{with $field := field "booking.CheckInDate" .}}

Check In Date:

* {{$field.Error}}

{{end}}

**option**

结合`field`模板函数生成`HTML option`元素

{{with $field := field "booking.Beds" .}}

{{option $field "1" "One king-size bed"}}
{{option $field "2" "Two double beds"}}
{{option $field "3" "Three beds"}}

{{end}}

**radio**

结合`field`模板函数生成`HTML radio`元素

{{with $field := field "booking.Smoking" .}}
{{radio $field "true"}} Smoking
{{radio $field "false"}} Non smoking
{{end}}

**nl2br**

生成HTML的换行标签

You said:

{{nl2br .commentText}}

**pluralize**

转换单词的复数形式

There are {{.numComments}} comment{{pluralize (len comments) "" "s"}}

**Including**

Go允许将一个模板嵌入至另一个模板

{{template "header.html" .}}

有两点需要注意:

1、路径必须是`app/views`的相对路径

2、任何被嵌入的模板必须位于`app/views`目录的根位置(这个限制希望是暂时的)

**Tips**

revel的示例程序说明了如何有效的使用模板,请特别留意这两个示例:

*revel/samples/booking/app/views/header.html*

*revel/samples/booking/app/views/header.html*

它利用模板函数设置模板自己的html header和样式:

{{.title}}

{{range .moreStyles}}

{{end}}

{{range .moreScripts}}

{{end}}

引用html header模板:

{{set . title "Hotels"}}
{{append . "moreStyles" "ui-lightness/jquery-ui-1.7.2.custom.css"}}
{{append . "moreScripts" "js/jquery-ui-1.7.2.custom.min.js"}}
{{template "header.html" .}}

##自定义模板函数

revel应用可以注册自定义模板函数:

func init() {
revel.TemplateFuncs["eq"] = func(a, b interface{}) bool { return a == b }
}

Go Revel - Templates(模板)的更多相关文章

  1. Templates 模板:

    Templates 模板: ########################温金 $template wj-flow01,"/data01/applog_backup/winfae_log/ ...

  2. python测试开发django-2.templates模板与html页

    前言 Django 中的视图的概念是一类具有相同功能和模板的网页的集合.通俗一点来说,就是你平常打开浏览器,看到浏览器窗口展示出来的页面内容,那就是视图.前面一章通过浏览器访问http://127.0 ...

  3. django templates模板

    Django templates模板 HTML代码可以被直接硬编码在views视图代码中,虽然这样很容易看出视图是怎么工作的,但直接将HTML硬编码到视图里却并不是一个好主意. 让我们来看一下为什么: ...

  4. python测试开发django-69.templates模板过滤器filter

    前言 templates 模板里面过滤器 filter 的作用是对变量的出来,比如小写转大写,替换一些特殊字符,对列表取值,排序等操作. 内置的过滤器有很多,本篇拿几个常用的过滤器做案例讲解下相关的功 ...

  5. python测试开发django-67.templates模板变量取值

    前言 django 的模板里面变量取值是通过句点语法来取值,就是一个点(.)符号.取值的对象也可以是字符串,int类型,list列表,字典键值对,也可以是一个类的实例对象. views视图 比如我在 ...

  6. Django web框架-----Django templates模板

    说明:mytestsite是django框架下的项目,quicktool是mytestsite项目中的应用 一般的变量之类的用 {{ }}(变量),功能类的比如循环.条件判断是用 {% %}(标签) ...

  7. 11、Django实战第11天:templates模板继承

    Django模板的继承,它首先定义一个整体的框架(父类),然后动态的部分(子类)只需要重写自己本身的代码就可以了. 1.在templates目录下创建base.html 2.把org-list.htm ...

  8. Ansible之templates模板

    一.jinja2简介解 Jinja2是Python下一个被广泛应用的模版引擎,他的设计思想来源于Djanjo的模板引擎,并扩展了其语法和一系列强大的功能.ansible的模板配置文件就是用jinja2 ...

  9. Django之templates模板

    模板渲染: 官方文档:https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#std:templatetag-for 模板渲染两种 ...

随机推荐

  1. Maven for Eclipse 第三章 ——创建和导入 Maven 项目

    这一章主要介绍 Maven 项目的结构,它的构建的架构,主要涵盖了必需的主题,最后将学习如何创建一个简单的 Maven 项目.这章主要包括以下部分. Maven 项目的结构 POM 文件(Projec ...

  2. spring 下载

    Spring官网(https://spring.io/)改版后,直接下载Jar包的链接,下面汇总 1.直接输入地址,改相应版本即可:http://repo.springsource.org/libs- ...

  3. Linux 下的hiredis的简单安装、测试*(转)

    上一章介绍的是如何安装Redis以及在Redis客户端上进行简单测试,但是我们一般安装完Redis之后,都是要结合编程语言对其进行应用的,hiredis是redis开源库对外发布的客户端API包,这一 ...

  4. 全相FFT

    作者:桂. 时间:2017-12-02  23:29:48 链接:http://www.cnblogs.com/xingshansi/p/7956491.html 一.相位提取 以正弦信号为例,x = ...

  5. kail-linux下安装pycharm

    1.下载pycharm pycharm官网下载链接:https://www.jetbrains.com/pycharm/download/#section=linux 请注意下载对应系统的profes ...

  6. Spring 注解@Component,@Service,@Controller,@Repository

    Spring 注解@Component,@Service,@Controller,@RepositorySpring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释, ...

  7. eclipse 创建Maven 架构的dynamic web project 问题解决汇总

    Eclipse创建Maven结构的web项目的时候选择Artifact Id为maven-artchetype-webapp,点击finish之后,一般会遇到如下问题 1. The superclas ...

  8. ASP.NET MVC中全局异常处理

    以前不知道从哪里找到的处理全局异常的,觉得蛮好用就记下来了. 1, 建立MyExecptionAttribute.cs类,写入如下代码: using System; using System.Coll ...

  9. Android AOP之路三 Android上的注解

    一.简单介绍 啥是注解.不懂的能够先看我上一篇文章. 在android 里面 注解主要用来干这么几件事: 和编译器一起给你一些提示警告信息. 配合一些ide 能够更加方便快捷 安全有效的编写java代 ...

  10. 进程process与线程thread

    进程:process是一个外理过程,即然是外理过程,那么它就有生命周期,从进程的启动,运行,直到运行结束,进程终止.进程是程序的执行实例,即运行中的程序,同时也是程序的一个副本,程序是放置于磁盘的,而 ...