- 1.2 快速入门
- 1.3 集成第三方应用
- 1.4 线程安全的 Map
- 1.5 Bee Watch
- 1.6 开发团队
- 1.7 开发案例
- 1.8 API自动化文档
- 1.9 进程内监控
- 1.10 beego 高级编程
- 1.11 第三方库
- 1.12 Apache 配置
- 1.13 独立部署
- 1.14 nginx 部署
- 1.15 发行部署
- 1.16 Supervisord
- 1.17 在线聊天室
- 1.18 示例程序
- 1.19 短域名服务
- 1.20 Todo 列表
- 1.21 bee 工具简介
- 1.22 beego 的安装
- 1.23 为 beego 做贡献
- 1.24 beego 简介
- 1.26 升级指南
- 1.27 模块介绍
- 1.28 缓存模块
- 1.29 配置文件解析
- 1.30 上下文模块
- 1.31 热升级是什么?
- 1.32 客户端请求
- 1.33 国际化介绍
- 1.34 日志处理
- 1.35 特别注意
- 1.36 核心工具模块
- 1.37 beego 的 MVC 架构介绍
- 1.39 参数配置
- 1.40 控制器介绍
- 1.41 错误处理
- 1.43 flash 数据
- 1.44 JSON、XML、JSONP
- 1.45 日志处理
- 1.46 获取参数
- 1.47 路由设置
- 1.48 session 控制
- 1.49 URL 构建
- 1.51 跨站请求伪造
- 1.53 命令模式
- 1.54 Custom Fields
- 1.55 FAQ
- 1.56 模型定义
- 1.57 对象的 CRUD 操作
- 1.58 ORM 使用方法
- 1.59 模型(Models)- beego ORM
- 1.60 高级查询
- 1.61 构造查询
- 1.62 使用SQL语句进行查询
- 1.63 ORM Test
- 1.64 事务处理
- 1.66 分页处理
- 1.67 静态文件
- 1.68 模板函数
- 1.69 beego 模板语法指南
- 1.70 模板处理
- 1.71 快速入门
- 1.72 controller 逻辑
- 1.73 model 分析
- 1.74 创建项目
- 1.75 项目路由设置
- 1.76 静态文件处理
- 1.77 View 编写
- 1.80 分页
- 1.81 FAQ
- 1.50 表单验证
- 1.42 过滤器
1.72 controller 逻辑
前面我们了解了如何把用户的请求分发到控制器,这小节我们就介绍大家如何来写控制器,首先我们还是从源码分析入手:
package controllers
import (
"github.com/astaxie/beego"
)
type MainController struct {
beego.Controller
}
func (this *MainController) Get() {
this.Data["Website"] = "beego.me"
this.Data["Email"] = "astaxie@gmail.com"
this.TplName = "index.tpl"
}
上面的代码显示首先我们声明了一个控制器 MainController
,这个控制器里面内嵌了 beego.Controller
,这就是 Go 的嵌入方式,也就是 MainController
自动拥有了所有 beego.Controller
的方法。
而 beego.Controller
拥有很多方法,其中包括 Init
、Prepare
、Post
、Get
、Delete
、Head
等方法。我们可以通过重写的方式来实现这些方法,而我们上面的代码就是重写了 Get
方法。
我们先前介绍过 beego 是一个 RESTful 的框架,所以我们的请求默认是执行对应 req.Method
的方法。例如浏览器的是 GET
请求,那么默认就会执行 MainController
下的 Get
方法。这样我们上面的 Get 方法就会被执行到,这样就进入了我们的逻辑处理。(用户可以改变这个行为,通过注册自定义的函数名,更加详细的请参考路由设置)
里面的代码是需要执行的逻辑,这里只是简单的输出数据,我们可以通过各种方式获取数据,然后赋值到 this.Data
中,这是一个用来存储输出数据的 map,可以赋值任意类型的值,这里我们只是简单举例输出两个字符串。
最后一个就是需要去渲染的模板,this.TplName
就是需要渲染的模板,这里指定了 index.tpl
,如果用户不设置该参数,那么默认会去到模板目录的 Controller/<方法名>.tpl
查找,例如上面的方法会去 maincontroller/get.tpl
(文件、文件夹必须小写)。
用户设置了模板之后系统会自动的调用 Render
函数(这个函数是在 beego.Controller 中实现的),所以无需用户自己来调用渲染。
当然也可以不使用模版,直接用 this.Ctx.WriteString
输出字符串,如:
func (this *MainController) Get() {
this.Ctx.WriteString("hello")
}
至此我们的控制器分析基本完成了,接下来让我们看看如何来编写 model。
model 逻辑
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论