Go语言Beego框架Web开发实战笔记

Ada
Ada
发布时间:2026-10-16 | 2人浏览过
原创

本文总结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 获取文件句柄并进行保存。

  1. HTML端准备:确保表单包含文件选择控件且编码类型正确。
<form action="/addArticle" method="post" enctype="multipart/form-data">
    <input type="file" name="uploadfilename">
    <button type="submit">提交</button>
</form>
  1. 后端接收与保存:
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开发语法的资料请关注本站其它相关文章!
相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表