Go语言Beego框架Web开发实战笔记
本文总结Go语言Beego框架在Web开发中的关键语法,包括控制器的跳转设置、ORM模型的详细属性配置、POST请求中字符串与文件的获取方法,以及前端模板的数据遍历和时间格式化技巧,帮助开发者快速搭建基础功能。
控制器跳转设置
在Beego控制器中,可以通过内置方法实现页面重定向或模板切换。`Redirect`用于301/302状态码跳转,`TplName`用于直接指定渲染的HTML模板。
c.Redirect("/login", 302) // 重定向到新路径
c.TplName = "login.html" // 直接渲染模板
ORM模型定义
Beego ORM支持通过结构体标签(struct tags)定义数据库字段属性。对于整型主键,可配置为自增;其他字段可设置大小、默认值、唯一性等约束。
第1步:设置主键与自增
当字段类型为 `int`, `int32`, `int64`, `uint`, `uint32`, `uint64` 时,可设置为主键并开启自增。若未显式定义主键,符合上述类型且名为 Id 的字段将自动视为自增主键。
Id int `orm:"pk;auto"`
第2步:配置常见字段属性
- 长度限制:
orm:"size(100)"限制字符串最大长度。 - 允许为空:
orm:"null"使数据库字段变为NULLABLE。 - 唯一性:
orm:"unique"确保字段值不重复。 - 默认值:
orm:"default(0)"设置插入时的默认数值。 - 浮点精度:
orm:"digits(12);decimals(4)"总共12位数字,其中4位小数。 - 时间自动处理:
orm:"auto_now_add;type(datetime)":仅在记录创建时自动填入当前时间。orm:"auto_now;type(date)":每次保存记录时自动更新为当前时间。
第3步:完整模型示例
以下代码演示了用户模型的结构定义,包含ID、名称、创建时间及计数字段:
package models
import (
"time"
"github.com/beego/beego/v2/client/orm"
)
func init() {
orm.RegisterModel(new(User))
}
type User struct {
Id int `orm:"pk;auto"` // 主键,自增
Name string `orm:"size(20)"` // 名称,最大长度20
CreateTime time.Time // 创建时间
Count int `orm:"default(0);null"` // 计数,默认0,可为空
}
处理POST请求
第1步:获取表单字符串值
使用 GetString 方法从前台表单中提取文本输入。需将提取的值赋值给 c.Data 以便传递给模板。
func (c *MainController) AddArticle() {
// 获取表单参数
userName := c.GetString("userName")
pwd := c.GetString("passwd")
// 存储到Data供视图使用
c.Data["name"] = userName
c.Data["pwd"] = pwd
beego.Info("用户名:", userName)
beego.Info("密码:", pwd)
c.TplName = "success.html"
}
第2步:处理文件上传
上传文件需在HTML表单中添加 enctype="multipart/form-data" 属性。后端通过 GetFile 获取文件句柄并进行保存。
- HTML端准备:确保表单包含文件选择控件且编码类型正确。
<form action="/addArticle" method="post" enctype="multipart/form-data">
<input type="file" name="uploadfilename">
<button type="submit">提交</button>
</form>
- 后端接收与保存:
f, h, err := c.GetFile("uploadfilename")
if err != nil {
beego.Error("获取文件失败: ", err)
return
}
defer f.Close()
// 将文件保存到本地 static/img/ 目录
fileName := h.Filename
err = c.SaveToFile("uploadfilename", "./static/img/"+fileName)
if err != nil {
beego.Error("文件保存失败: ", err)
}
第3步:获取文件后缀
利用标准库 path 可以方便地提取文件名后缀,常用于文件校验:
import "path"
fileExt := path.Ext(h.Filename) // 例如返回 .jpg, .png
数据查询与展示
第1步:ORM查询所有数据
使用 QueryTable 配合 All 方法获取某张表的所有记录。注意传入指针切片接收结果。
var users []models.User
o := orm.NewOrm()
_, err := o.QueryTable("User").All(&users)
if err != nil {
beego.Error("查询失败")
return
}
// 将数据传递给模板
c.Data["users"] = users
第2步:前端模板循环渲染
Beego模板使用 range 关键字遍历列表。注意引用方式与变量命名。
{{range .users}}
<tr>
<td>{{.Name}}</td>
<td>{{.Count}}</td>
</tr>
{{end}}
第3步:时间与URL参数处理
在模板中可直接调用Go的时间格式化方法,或通过URL传递ID参数:
<!-- 时间格式化 -->
<td>{{.CreateTime.Format "2006-01-02 15:04:05"}}</td>
<!-- URL传参链接 -->
<a href="/article/detail?id={{.Id}}">查看详情</a>
以上就是Go语言Beego框架Web开发语法笔记示例的详细内容,更多关于Go语言Beego框架Web开发语法的资料请关注本站其它相关文章!本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













