#|Beego脱坑(五)使用模板获取数据

title: Beego脱坑(五)使用模板获取数据
tags: go,beego
author : Clown95
在Controller 那批文章中,我们提到过 Controller有五大部分,其中一个部分就是模板,接下来我们就来完成一个简单的表单页面,并进行交互。
获取参数 当用户进行注册的时候,需要提交不同的数据类型,beego 为我们提供了一些方法,它会会自动解析这些数据。

  • GetString(key string) string //获取字符串类型
  • GetStrings(key string) []string //获取字符串数组
  • GetInt(key string) (int64, error) //获取整型数据
  • GetBool(key string) (bool, error) // 获取布尔型数据
  • GetFloat(key string) (float64, error) //获取浮点型数据
【#|Beego脱坑(五)使用模板获取数据】现在我们来进行一些演示:
package controllersimport ( "fmt" "github.com/astaxie/beego" "strconv" )type Demo1Controller struct { beego.Controller }func (this *Demo1Controller) Get(){ name:=this.GetString("name") nametype:= fmt.Sprintf("%T", name) this.Ctx.WriteString("name:" + name +"type:"+nametype +"\n") age,err:= this.GetInt("age") if err!=nil{ this.Ctx.WriteString("age传递过来的值无法转换成int") } agetype:= fmt.Sprintf("%T", age) this.Ctx.WriteString("age:"+ strconv.Itoa(age) +"type:"+agetype+"\n") }

注册路由
beego.Router("/demo1",&controllers.Demo1Controller{})

我们使用curl命令执行看看
curl -XGET "http://127.0.0.1:8080/demo1?name=clown&age=18" curl -XGET "http://127.0.0.1:8080/demo1?name=clown&age=18i"

#|Beego脱坑(五)使用模板获取数据
文章图片

通过运行结果,可以看到,GetString 自动帮我们把name参数解析成string类型。
GetInt 自动帮我们把age参数解析成int类型,但是如果我们传入的age的值是非法的,它并不能解析。
还有几个其他的函数,使用方法都大同小异,这里不在多说。
表单页面 现在我们来完成一个注册表单的页面,通过表单来提交POST请求,并且通过GET打印
首先我们在view下新建一个register.tpl
欢迎注册 - 锐客网
用户名
密码
邮箱

action="/register" method=“post” 我们可以看到表单指向了register地址,提交方法为post 。
所以接下来我们在Controllers目录下新建register.go文件
package controllersimport "github.com/astaxie/beego"typeLoginController struct { beego.Controller } //使用Get方法 func (this * LoginController) Get(){ this.TplName ="register.tpl"//解析register模板 } //使用Post方法 func (this *LoginController) Post(){ user:=this.GetString("user") pwd:= this.GetString("pwd") email :=this.GetString("email") this.Ctx.WriteString("user="+user+" pwd="+pwd + " email=" +email +"\n") }

然后注册路由
beego.Router("/register",&controllers.LoginController{},"Get:Get; Post:Post")

现在我们来运行看看
#|Beego脱坑(五)使用模板获取数据
文章图片

得到结果
#|Beego脱坑(五)使用模板获取数据
文章图片

this.TplName ="register.tpl"//解析register模板

可以看到我们使用的 Get 方法解析了 register.tpl 模板,我们需要使用模只要用TplName指定模板即可,默认是获取View路径中的模板。
然后对比下面两段代码

user:=this.GetString("user") pwd:= this.GetString("pwd") email:= this.GetString("email")

可以看到 GetString 解析的是 input中 name 属性,这两个值必须对应,否则会解析不到数据。
本篇文章我们只是讲解了怎么从模板获取到数据,下一章我们将会说明如果把数据显示到模板上。

    推荐阅读