zoukankan      html  css  js  c++  java
  • Beego学习笔记5:MVC-VC

    MVC-VC

    1>     新建一个user.go控制器,其代码如下:

     

    package controllers
    
    import (
    	"webapp/models"
    	"strconv"
    	"fmt"
    	"github.com/astaxie/beego"
    	"github.com/astaxie/beego/orm"
    	_"github.com/go-sql-driver/mysql"
    )
    //控制器
    type HomeController struct {
    	beego.Controller
    }
    
    //get请求用户列表 执行的方法
    func (c *HomeController) Get() {
    	o := orm.NewOrm()
    	o.Using("default")
    	//用户列表
    	userlist:=models.DataList()
    	fmt.Println("用户列表数据:")
    	fmt.Println(userlist)
    	 /*返回json数据*/
    	 c.Data["datas"]=userlist
    	 c.TplName = "home.html"
    }
    //删除方法
    type DeleteHomeController struct {
    	beego.Controller
    }
    func (c *DeleteHomeController) Get() {
    	o := orm.NewOrm()
    	o.Using("default")
    	id, _ := c.GetInt64("Id")
    	fmt.Println(id)
    	isdelete:=models.DeleteById(id)
    	
    	if isdelete{
    	  fmt.Println("删除成功")	  
    	}else{
    	  fmt.Println("删除失败")
    	}
    	//路径的跳转
    	c.Redirect("/", 302)
    }
    //get请求用户列表 执行的方法
    type EditHomeController struct {
    	beego.Controller
    }
    func (c *EditHomeController) Get() {
    	o := orm.NewOrm()
    	o.Using("default")
    	//用户列表
    	idval,errId:=strconv.ParseInt(c.GetString("Id"),10,64);
    	if errId!=nil{
    		fmt.Println("缺少参数id");
    	} 
    	user,err:=models.QueryById(idval)
    	if err==true{
    		fmt.Println("获取模型失败");
    		fmt.Println(err);
    	}else{
    		fmt.Println("获取模型成功");
    	}
    	 /*返回json数据*/	
    	 c.Data["data"]=user 
    	 c.TplName = "edit.html"
    }
    
    //编辑新增/更新方法
    type UpdateHomeController struct {
    	beego.Controller
    }
    func (c *UpdateHomeController) Post() {
    	o := orm.NewOrm()
    	o.Using("default")
    
    	fields := make(map[string] interface{})	
    
    	//获取参数
    	id, _ := c.GetInt("Id")
    	name:=c.GetString("name")
        nickname:=c.GetString("nickname")
        pwd:=c.GetString("pwd")
        email:=c.GetString("email")
    	sex:=c.GetString("sex")
    	phone:=c.GetString("phone")
    	roleid:="1"; 
    	status,_:=strconv.ParseInt("1",10,64);
    	//新增用户
    	if id==0 {
    	   idval,_:=strconv.ParseInt("0",10,64);
           //新增一条数据,并给模型赋值
    	   user :=models.Create(idval,name,nickname,pwd,email,sex,roleid,status,phone)	
    	   fmt.Println(user)
    	}else{
    		fields["Id"]=id
    		name:= c.GetString("name")
    		fields["Name"]=name
    		nickname:= c.GetString("nickname")
    		fields["Nickname"]=nickname
    		pwd:= c.GetString("pwd")
    		fields["Pwd"]=pwd
    		sex:= c.GetString("sex")
    		fields["Sex"]=sex
    		email:= c.GetString("email")
    		fields["Email"]=email
    		//更新
    		models.UpdateById(id,"user", fields)
    	}
    	//路径的跳转
    	c.Redirect("/Home/List", 302)
    }
    //控制器
    type UserController struct {
    	beego.Controller
    }
    
    //get请求用户分页列表 执行的方法
    func (c *UserController) Get() {
    	o := orm.NewOrm()
    	o.Using("default")
        //得到当前分页html的数据
    	pa,err:=c.GetInt("page")
    	if err!=nil{
    		println(err)
    	}
    	pre_page:=3
    	totals:=models.GetDataNum()
    	res := models.Paginator(pa, pre_page, totals)
    	//得到分页user的数据
    	userlist:=models.LimitList(3,pa)
    	c.Data["datas"] = userlist  //用户的数据
    	c.Data["paginator"] = res   //分页的数据
    	c.Data["totals"] = totals   //分页的数据
    	c.TplName="list.html"
    }
    

      

    2>     在路由器文件router.go中添加路由配置,其代码如下:

    package routers
    
    import (
    	"firstweb/controllers"
    	"github.com/astaxie/beego"
    )
    
    func init() {
    	//beego.Router("/", &controllers.MainController{})
    	beego.Router("/", &controllers.HomeController{})
    	beego.Router("/Home/Edit", &controllers.EditHomeController{})
    	beego.Router("/Home/Update", &controllers.UpdateHomeController{})
    	beego.Router("/Home/Delete", &controllers.DeleteHomeController{})
    	beego.Router("/Home/List", &controllers.UserController{})
    }
    

      

    3>     在views文件夹下添加2html页面,分别为home.html,edit.html

    4>     Home.html页面的代码如下:

     

    <!DOCTYPE html>
     
    <html>
          <head>
            <title>首页 - 用户列表页面</title>
            <link rel="shortcut icon" href="/static/img/favicon.png" />
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
          </head>
        
        <body>
         
            <div class="row pull-right" style="margin-bottom: 20px;margin-right: 45px;text-align:right;">
              <a class="btn btn-success" href="/Home/Edit?Id=0">添加</a>
            </div>
                
            <table class="table table-striped table-hover table-bordered ">
              <thead>
               <th style="text-align: center">ID</th>
               <th style="text-align: center">名称</th>
               <th style="text-align: center">昵称</th>
               <th style="text-align: center">密码</th>
               <th style="text-align: center">Email</th>
               <th style="text-align: center">性别</th>
               <th style="text-align: center">手机号</th>
               <th style="text-align: center">操作</th>
             </thead>
            
             <tbody id="sortable">
                {{range $index, $item := .datas}}
                <tr class="sort-item"  id="module_{{$item.Id}}" value="{{$item.Id}}">
                  <td style="text-align: center; 150px;"><span class="label label-default" >{{$item.Id}}</span></td>
                  <td style="text-align: center; 240px;" ><strong>{{$item.Name}}</strong></td>
                  <td style="text-align: center; 240px;" ><strong>{{$item.Nickname}}</strong></td>
                  <td style="text-align: center; 240px;" ><strong>{{$item.Pwd}}</strong></td>
                  <td style="text-align: center; 240px;" ><strong>{{$item.Email}}</strong></td>
                  <td style="text-align: center; 240px;" ><strong>{{$item.Sex}}</strong></td>
                  <td style="text-align: center; 240px;" ><strong>{{$item.Phone}}</strong></td>
                  <td style="text-align: center; 150px;">
                    <a href="/Home/Edit?Id={{$item.Id}}" class="label label-info" title="修改" >修改</a>
                    <a href="/Home/Delete?Id={{$item.Id}}" class="label label-info" title="删除">删除</a>
                  </td>
                </tr>
                {{end}}            
             </tbody>
            </table>
            
            <script type="text/javascript" src="http://cdn.staticfile.org/jquery/2.0.3/jquery.min.js"></script>       
            
        </body>
    </html>
    

    5>edit.html页面如下:

    <div class="col-xs-6 col-sm-9">
        <form class="form-horizontal" method="post" id="mainPageContent" action="/Home/Update" enctype="multipart/form-data">
           {{if .data}}
            <input type="hidden" name="Id" value="{{.data.Id}}">
          {{end}}
            <div class="form-group has-success">
              <label  class="col-sm-2 control-label">名称</label>        
              <div class="col-sm-3">
                <input type="text" class="form-control" id="name" name="name" placeholder="姓名"
                 {{if .data}}value="{{.data.Name}}"{{end}}>
              </div>
            </div>
            <div class="form-group has-success">
                <label  class="col-sm-2 control-label">昵称</label>        
                <div class="col-sm-3">
                  <input type="text" class="form-control" id="nickname" name="nickname" placeholder="昵称"
                  {{if .data}}value="{{.data.Nickname}}"{{end}}>
                </div>
            </div>
            <div class="form-group has-success">
                <label  class="col-sm-2 control-label">密码</label>        
                <div class="col-sm-3">
                  <input type="text" class="form-control" id="pwd" name="pwd" placeholder="密码"
                {{if .data}}value="{{.data.Pwd}}"{{end}}>
                </div>
            </div>
            <div class="form-group has-success">
                <label  class="col-sm-2 control-label">Email</label>        
                <div class="col-sm-3">
                  <input type="text" class="form-control" id="email" name="email" placeholder="Email"
                  {{if .data}}value="{{.data.Email}}"{{end}}>
                </div>
            </div>
            <div class="form-group has-success">
                <label  class="col-sm-2 control-label">性别</label>        
                <div class="col-sm-3">
                  <input type="text" class="form-control" id="sex" name="sex" placeholder="Sex"
                   {{if .data}}value="{{.data.Sex}}"{{end}}>
                 </div>
            </div>
            <div class="form-group has-success">
                <label  class="col-sm-2 control-label">手机号</label>        
                <div class="col-sm-3">
                  <input type="text" class="form-control" id="phone" name="phone" placeholder="Phone"
                   {{if .data}}value="{{.data.Phone}}"{{end}}>
                 </div>
            </div>
            <div class="form-group">
               <div class="col-sm-offset-2 col-sm-10">
                 <button type="submit" class="btn btn-info">确定</button>
               </div>
            </div>
        </form>
    </div>
    

      

    6>     运行起来的效果如下:

    1->列表页面如下:

     

    2->编辑页面如下:

     

    3->新增页面如下:

     

    4->删除效果

     

    7>     下一回实现分页的效果

  • 相关阅读:
    redis集群方式
    缓存数据库redis相关问题
    mybatis中如何进行多表关联查询
    mabaits出现parma不匹配时 或者参数>number 4 ,解决方法。
    El表达式
    Jsp概述
    Session会话技术
    springMVC之DateSource提示com.mysql.jdbc.Driver找不到
    Oracle查询死锁
    Mybatis 向oracle批量插入与更新数据
  • 原文地址:https://www.cnblogs.com/tudaogaoyang/p/7975650.html
Copyright © 2011-2022 走看看