golang(4)使用beego + ace admin 开发后台系统 CRUD

golang(4)使用beego + ace admin 开发后台系统 CRUD,第1张

概述1,关于ace admin ace admin 是一个非常好的后台系统ui。 集成了很多的好东西。非常的方便开发后天系统,而且能很漂亮。 上面有一堆的例子。非常的漂亮。 http://ace.jeka.by/ 之前还是收费的。后来在github 上面放了一个项目。 但是没有源码。是压缩之后的代码。而且,付费地址也不再了。 是一个过期了的模板 3 年前的了。 github 地址: https://g 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 文件夹下面:

CSSFont-awesomeimagesJs

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

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` datetime NOT NulL,`update_time` datetime NOT NulL,UNIQUE KEY `user_name` (`key`),PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAulT CHARSET=utf8;

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

package modelsimport (    "github.com/astaxIE/beego/orm"    "github.com/astaxIE/beego/logs"    "time")type UserInfo struct {    ID         int64  `orm:"auto"`    Username   string `orm:"size(255)"`    @H_404_186@//登录名    Password   string `orm:"size(255)"`    @H_404_186@//密码    name       string `orm:"size(255)"`    @H_404_186@//用户名    BirthDate  string `orm:"size(255)"`    @H_404_186@//生日    Gender     int8       @H_404_186@//性别    Email      string `orm:"size(255)"`    @H_404_186@//Email    Phone      string `orm:"size(255)"`    @H_404_186@//电话    Status     int8     @H_404_186@//状态    CreateTime time.Time @H_404_186@//创建时间    UpdateTime time.Time  @H_404_186@//更新时间}func init() {    orm.RegisterModel(new(UserInfo))}@H_404_186@//创建&更新func SaveUserInfoByID(m *UserInfo) (err error) {    o := orm.NewOrm()    var num int64    if m.ID == 0 {        m.CreateTime = time.Now()        m.UpdateTime = time.Now()        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 {            @H_404_186@//修改几个参数的名称。            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.UpdateTime = time.Now()            if num,err = o.Update(tmp); err == nil {                logs.Info("Number of records updated in database:",num)            }        }    }    return}@H_404_186@//删除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}@H_404_186@//按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}@H_404_186@//查询数据func queryAllUserInfo() (dataList []interface{},err error) {    var List []UserInfo    o := orm.NewOrm()    qs := o.querytable(new(UserInfo))    @H_404_186@//查询    @H_404_186@//查询数据    if _,err = qs.All(&List); err == nil {        for _,v := range List {            dataList = append(dataList,v)        }        return dataList,err}

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

4,controller 控制
package controllersimport (    "github.com/astaxIE/beego/logs"    "github.com/astaxIE/beego"    "github.com/freewebsys/go-admin/models")type UserInfoController struct {    beego.Controller}@H_404_186@//修改func (c *UserInfoController) Edit() {    @H_404_186@//获得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"}@H_404_186@//删除func (c *UserInfoController) Delete() {    @H_404_186@//获得ID    ID, 0)    if err := models.DeleteUserInfo(ID); err == nil {        c.Data["Json"] = "ok"    } else {        c.Data["Json"] = "error"    }    c.ServeJsON()}@H_404_186@//保存func (c *UserInfoController) Save() {    @H_404_186@//自动解析绑定到对象中    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()}@H_404_186@//返回全部数据func (c *UserInfoController) List() {    dataList,err := models.queryAllUserInfo()    if err == nil {        c.Data["List"] = dataList    }    logs.Info("dataList :",dataList)    c.Tplname = "userInfo/List.HTML"}
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 .UpdateTime "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 .UpdateTime “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 窗口d出参考:
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');@H_404_186@//.addClass('has-info');                $(e).remove();            }        });    });    @H_404_186@//保存,之前进行校验    function save() {        if ($('#saveForm').valID()) {            $.post("/admin/userInfo/save",$("#saveForm").serialize(),function (data) {                    window.location.reload();                });        }    }
7,拦截器
//增加拦截器。    var filteradmin = func(ctx *context.Context) {        url := ctx.input.URL()        logs.Info("##### filter url : %s",url)        //Todo 如果判断用户未登录。    }    beego.InsertFilter("/admin/*",beego.BeforeExec,filteradmin)

可以针对 /admin/* 进行拦截

8,关闭防火墙

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

6,总结

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

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

总结

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1278917.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存