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) //获取浮点型数据
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"
文章图片
通过运行结果,可以看到,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")
现在我们来运行看看
文章图片
得到结果
文章图片
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 属性,这两个值必须对应,否则会解析不到数据。
本篇文章我们只是讲解了怎么从模板获取到数据,下一章我们将会说明如果把数据显示到模板上。
推荐阅读
- 数据结构和算法|LeetCode 的正确使用方式
- Go|Docker后端部署详解(Go+Nginx)
- GO|GO,GO,GO!
- #|7.分布式事务管理
- #|算法设计与分析(Java实现)——贪心算法(集合覆盖案例)
- #|算法设计与分析(Java实现)—— 动态规划 (0-1 背包问题)
- #|阿尔法点亮LED灯(一)汇编语言
- #|Multimedia
- #|ARM裸机开发(汇编LED灯实验(I.MX6UL芯片))
- 基础课|使用深度优先搜索(DFS)、广度优先搜索(BFS)、A* 搜索算法求解 (n^2 -1) 数码难题,耗时与内存占用(时空复杂度)对比(附((n^2 - 1) 数码问题控