Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了golang(4)使用beego + ace admin 开发后台系统 CRUD大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

1,关于ace admin

ace admin 是一个非常好的后台系统ui。
集成了很多的好东西。非常的方便开发后天系统,而且能很漂亮。
上面有一堆的例子。非常的漂亮。
http://ace.jeka.by/

之前还是收费的。后来在github 上面放了一个项目。
但是没有源码。是压缩之后的代码。而且,付费地址也不再了。
一个过期了的模板 3 年前的了。
github 地址:
https://github.com/bopoda/ace
项目已经没有人维护了。也没有源码了,原来的购买地址都没有了。做公司的后天系统没啥问题了。
比起其他的也没感觉上不潮但比起原生的 bootstrap 要好看点。
已经不错了,还要啥自行车呢。
我写了一个 go-admin 的demo :
项目地址:
https://github.com/freewebsys/go-admin
代码上传上去了。

2,做一个 golang的后台管理足够了

项目使用beego 进行开发,使用beego开发还是非常的快速的。
将项目 ace 代码 assets 下面的 4个 文件夹拷贝到 beego 项目的 static 文件夹下面:

css
font-awesome
images
js

项目几算导入了。其他两个文件夹不加也罢。

3,model 存储对象

存储对象一个用户表的设计:

CREATE TABLE `user_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT,`user_name` varchar(200) DEFAULT NULL,`password` varchar(200) DEFAULT NULL,`name` varchar(200) DEFAULT NULL,`birth_date` varchar(200) DEFAULT NULL,`gender` int(1) DEFAULT NULL,`email` varchar(200) DEFAULT NULL,`phone` varchar(200) DEFAULT NULL,`status` tinyint(1) NOT NULL,`create_time` datetiR_702_11845@e NOT NULL,`update_time` datetiR_702_11845@e NOT NULL,UNIQUE KEY `user_name` (`key`),PRIMary KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

一个简单的用户
对应的数据操作:

package models

import (
    "github.com/astaxie/beego/orm"
    "github.com/astaxie/beego/logs"
    "time"
)

type UserInfo struct {
    Id         int64  `orm:"auto"`
    UserName   String `orm:"size(255)"`    //登录
    password   String `orm:"size(255)"`    //密码
    Name       String `orm:"size(255)"`    //用户名
    BirthDate  String `orm:"size(255)"`    //生日
    gender     int8       //性别
    Email      String `orm:"size(255)"`    //Email
    Phone      String `orm:"size(255)"`    //电话
    Status     int8     //状态
    CreateTime time.Time //创建时间
    UpdatetiR_702_11845@e time.Time  //更新时间
}

func init() {
    orm.RegisterModel(new(UserInfo))
}

//创建&更新
func SaveUserInfoById(m *UserInfo) (err error) {
    o := orm.NewOrm()
    var num int64
    if m.Id == 0 {
        m.CreateTime = time.@L_696_25@()
        m.UpdatetiR_702_11845@e = time.@L_696_25@()
        if num,err = o.Insert(m); err == nil {
            logs.Info("number of records insert in database:",num)
        }
    } else {
        var tmp *UserInfo
        tmp,err = GetUserInfoById(m.Id)

        if err == nil {

            //修改几个参数的名称
            tmp.UserName = m.UserName
            tmp.Name = m.Name
            tmp.birthDate = m.birthDate
            tmp.gender = m.gender
            tmp.Email = m.Email
            tmp.phone = m.Phone
            tmp.Status = m.Status
            tmp.UpdatetiR_702_11845@e = time.@L_696_25@()

            if num,err = o.update(tmp); err == nil {
                logs.Info("number of records updated in database:",num)
            }
        }
    }
    return
}

//删除
func deleteUserInfo(id int64) (err error) {
    o := orm.NewOrm()
    v := UserInfo{Id: iD}
    if err = o.Read(&v,"Id"); err == nil {
        if num,err := o.delete(&UserInfo{Id: iD}); err == nil {
            logs.Info("number of records deleted in database:",num)
        }
    }
    return
}

//按id查询
func GetUserInfoById(id int64) (v *UserInfo,err error) {
    o := orm.NewOrm()
    v = &UserInfo{Id: iD}
    if err = o.Read(v,"Id"); err == nil {
        return v,nil
    }
    return nil,err
}

//查询数据
func QueryAllUserInfo() (dataList []interface{},err error) {
    var list []UserInfo
    o := orm.NewOrm()
    qs := o.QueryTable(new(UserInfo))
    //查询
    //查询数据
    if _,err = qs.All(&list); err == nil {
        for _,v := range list {
            dataList = append(dataList,v)
        }
        return dataList,err
}

了bee go 自动生成代码。但是发现beego 升级了之后模板变了。
其中特别要主要 := 的坑,如果稍不留神就会替换掉对象在一个作用域下,而且不会报错呢。

4,controller 控制

package controllers

import (
    "github.com/astaxie/beego/logs"
    "github.com/astaxie/beego"
    "github.com/freewebsys/go-admin/models"
)

type UserInfoController struct {
    beego.Controller
}

//修改
func (c *UserInfoController) Edit() {
    //获得id
    id,_ := c.GeTint64("Id", 0)
    userInfo,err := models.GetUserInfoById(id)
    if err == nil {
        c.Data["UserInfo"] = userInfo
    } else {
        tmpUserInfo := &modelS.UserInfo{}
        tmpUserInfo.Status = -1
        tmpUserInfo.gender = -1
        c.Data["UserInfo"] = tmpUserInfo
    }
    c.TplName = "userInfo/edit.html"
}

//删除
func (c *UserInfoController) delete() {
    //获得id
    id, 0)
    if err := models.deleteUserInfo(id); err == nil {
        c.Data["json"] = "ok"
    } else {
        c.Data["json"] = "error"
    }
    c.ServeJSON()
}

//保存
func (c *UserInfoController) Save() {
    //自动解析绑定到对象中
    userInfo := modelS.UserInfo{}
    if err := c.ParseForm(&userInfo); err == nil {
        if err := models.SaveUserInfoById(&userInfo); err == nil {
            c.Data["json"] = ""
        } else {
            c.Data["json"] = "error"
        }
    } else {
        c.Data["json"] = "error"
    }
    c.ServeJSON()
}

//返回全部数据
func (c *UserInfoController) List() {

    dataList,err := models.QueryAllUserInfo()
    if err == nil {
        c.Data["List"] = dataList
    }
    logs.Info("dataList :",dataList)
    c.TplName = "userInfo/list.html"

}
@H_980_450@5,view 展示

展示列表:
http://ace.jeka.by/tables.html

<table id="simple-table" class="table table-bordered table-hover"> <tr> <th>Id</th> <th>姓名</th> <th>生日</th> <th>性别</th> <th>Email</th> <th>电话</th> <th>状态</th> <th>创建时间</th> <th>更新时间</th> <th>操作</th> </tr> {{range .List}} <tr> <td>{{.Id}}</td> <td>{{.Name}}</td> <td>{{.birthDate}}</td> <td>{{.gender}}</td> <td>{{.Email}}</td> <td>{{.Phone}}</td> <td>{{.Status}}</td> <td>{{date .CreateTime "2006-01-02 15:04:05"}}</td> <td>{{date .UpdatetiR_702_11845@e "2006-01-02 15:04:05"}}</td> <td> <div class="hidden-sm hidden-xs btn-group"> <button class="btn btn-xs btn-info" onclick="showEditWindow('{{.Id}}');"> <i class="ace-icon fa fa-pencil bigger-120"></i> </button> <button class="btn btn-xs btn-danger" onclick="deleteConfirm('{{.Id}}');"> <i class="ace-icon fa fa-trash-o bigger-120"></i> </button> </div> </td> </tr> {{end}} </table>

特别注意对时间字段的格式化:{{date .UpdatetiR_702_11845@e “2006-01-02 15:04:05”}} 不是java习惯的 yyyy-MM-dd
感觉上一点也不好记。是按照老外的习惯记住的 1 2 3 4 5 6 的规则命名的。

创建& 编辑:

将对象放到 data里面,然后做展示编辑。

<div class="col-sm-9">
                        <input type="text" id="UserName" name="UserName" placeholder="登录名" class="col-xs-10 col-sm-5"
                               value="{{.UserInfo.UserNamE}}"/>
                    </div>

其中编辑使用div 窗口弹出参
http://ace.jeka.by/form-elements.html
http://ace.jeka.by/content-slider.html
并且页面进行校验:

使用的教研框架:http://jqueryvalidation.org/

jQuery(function ($) {
        $('#saveForm').validate({
            errorElement: 'div',errorClass: 'Help-block',focusInvalid: false,ignore: "",rules: {
                UserName: {
                    required: true,}
            },highlight: function (E) {
                $(E).closest('.form-group').removeClass('has-info').addClass('has-error');
            },success: function (E) {
                $(E).closest('.form-group').removeClass('has-error');//.addClass('has-info');
                $(E).remove();
            }
        });
    });
    //保存,之前进行校验
    function save() {
        if ($('#saveForm').valid()) {
            $.post("/admin/userInfo/save",$("#saveForm").serialize(),function (data) {
                    window.LOCATIOn.reload();
                });
        }
    }

7,@L_489_50@器

//增加@L_489_50@器。
    var filterAdmin = func(ctx *context.Context) {
        url := ctx.Input.URL()
        logs.Info("##### filter url : %s",url)
        //TODO 如果判断用户登录。

    }
    beego.InsertFilter("/admin/*",beego.beforeExec,filterAdmin)

可以针对 /admin/* 进行@L_489_50@

8,关闭防火墙

在 mac 上面发现总是要允许端口,开发比较讨厌,请关闭防火墙:

6,总结

beego 开发一个admin系统还是挺快的。
因为beego 可以自动检查代码改的,自动重启,开发速度还是很快的。
并且因为beego的编译启动还是非常的快速的。
所以开发速度还是挺快的。golang的代码还需要适应下。上手还是挺快的。1,2个星期就能开发一个小系统。
做个用户权限,登录啥的都非常方便

本文的原文连接是: http://code.js-code.com/article/p-edhoztoa-bew.html 未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

大佬总结

以上是大佬教程为你收集整理的golang(4)使用beego + ace admin 开发后台系统 CRUD全部内容,希望文章能够帮你解决golang(4)使用beego + ace admin 开发后台系统 CRUD所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。