如何在Golang的qor/admin中添加新模块?已通过go get完成安装
在QOR Admin中添加新模块的完整指南
嘿,很高兴你已经搞定了qor/admin的安装!下面我带你一步步在Go项目里添加新模块,流程其实很直观,咱们一步步来:
1. 先定义你的业务模型
首先你需要创建一个Go结构体作为你的模块模型,QOR Admin依赖GORM,所以记得加上GORM的标签来定义数据库字段属性。比如我们创建一个Product(商品)模型:
package models import "gorm.io/gorm" type Product struct { gorm.Model // 内置ID、CreatedAt、UpdatedAt、DeletedAt字段 Name string `gorm:"size:255;not null"` // 商品名称,非空 Description string `gorm:"type:text"` // 商品描述 Price float64 `gorm:"type:decimal(10,2)"`// 商品价格,保留两位小数 InStock bool `gorm:"default:true"` // 是否有货,默认true }
2. 初始化QOR Admin与数据库连接
在你的项目入口文件(比如main.go)里,先完成数据库连接并初始化QOR Admin实例:
package main import ( "net/http" "your-project-path/models" // 替换成你的models包路径 "github.com/qor/admin" "gorm.io/driver/sqlite" // 这里用SQLite示例,可替换为mysql/postgres "gorm.io/gorm" ) func main() { // 1. 连接数据库 db, err := gorm.Open(sqlite.Open("store.db"), &gorm.Config{}) if err != nil { panic("数据库连接失败: " + err.Error()) } // 2. 自动迁移模型到数据库(会自动创建对应的表) db.AutoMigrate(&models.Product{}) // 3. 初始化QOR Admin实例 adminInstance := admin.New(&admin.AdminConfig{DB: db})
3. 注册你的新模块
这一步是核心,把刚才定义的Product模型注册到QOR Admin中,这样后台就能识别并生成对应的CRUD界面:
// 注册Product模块到Admin后台 productResource := adminInstance.AddResource(&models.Product{})
4. (可选)自定义模块的行为与界面
QOR Admin支持很多自定义配置,比如调整列表显示字段、表单字段顺序、添加自定义动作等,举几个常用的例子:
自定义列表与表单字段
// 设置列表页显示的字段(只展示关键信息) productResource.IndexAttrs("ID", "Name", "Price", "InStock") // 设置新增/编辑页面的字段顺序与显示 productResource.NewAttrs("Name", "Description", "Price", "InStock") productResource.EditAttrs("Name", "Description", "Price", "InStock")
添加自定义动作
比如给商品添加一个「标记为缺货」的批量动作:
productResource.Action(&admin.Action{ Name: "标记为缺货", Handler: func(ctx *admin.ActionContext) { var products []models.Product // 获取用户选中的记录 ctx.FindSelectedRecords(&products) // 批量更新状态 for idx := range products { products[idx].InStock = false ctx.GetDB().Save(&products[idx]) } ctx.Writer.Write([]byte("已成功将选中商品标记为缺货!")) }, })
5. 启动服务并访问后台
最后把Admin挂载到HTTP路由上,启动服务:
// 将Admin后台挂载到/admin路径 mux := http.NewServeMux() adminInstance.MountTo("/admin", mux) // 启动HTTP服务,监听9000端口 println("Admin后台已启动,访问地址: http://localhost:9000/admin") http.ListenAndServe(":9000", mux) }
运行你的Go项目后,打开浏览器访问http://localhost:9000/admin,就能看到你刚添加的Product模块了,里面自带完整的增删改查功能,还有你自定义的配置哦!
内容的提问来源于stack exchange,提问作者rajendra




