You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在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

火山引擎 最新活动