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;width: 150px;"><span class="label label-default" >{{$item.Id}}</span></td>
<td style="text-align: center;width: 240px;" ><strong>{{$item.Name}}</strong></td>
<td style="text-align: center;width: 240px;" ><strong>{{$item.Nickname}}</strong></td>
<td style="text-align: center;width: 240px;" ><strong>{{$item.Pwd}}</strong></td>
<td style="text-align: center;width: 240px;" ><strong>{{$item.Email}}</strong></td>
<td style="text-align: center;width: 240px;" ><strong>{{$item.Sex}}</strong></td>
<td style="text-align: center;width: 240px;" ><strong>{{$item.Phone}}</strong></td>
<td style="text-align: center;width: 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> 下一回实现分页的效果
Beego学习笔记5:MVC-VC的更多相关文章
- Beego学习笔记——开始
beego简介 beego是一个快速开发Go应用的http框架,他可以用来快速开发API.Web.后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado.sinatra.fl ...
- Beego学习笔记——Logs
日志处理 这是一个用来处理日志的库,它的设计思路来自于database/sql,目前支持的引擎有file.console.net.smtp,可以通过如下方式进行安装: go get github.co ...
- Beego学习笔记——Config
配置文件解析 这是一个用来解析文件的库,它的设计思路来自于database/sql,目前支持解析的文件格式有ini.json.xml.yaml,可以通过如下方式进行安装: go get github. ...
- Beego学习笔记
Beego学习笔记 Go 路由(Controller) 路由就是根据用户的请求找到需要执行的函数或者controller. Get /v1/shop/nike ShopController Get D ...
- Beego 学习笔记15:布局页面
页面布局 1> 一个html页面由:head部分,body部分,内部css,内部js,外联css,外联的js这几部分组成.因此,一个布局文件也就需要针对这些进行拆分. 2> ...
- Beego 学习笔记14:Session控制
Session控制 1> Session常用来作为全局变量使用,比如记录当前登录的用户,或者页面之间传递数据使用. 2> Beego框架内置了 session 模块,目前 ...
- jsp学习笔记:mvc开发模式
jsp学习笔记:mvc开发模式2017-10-12 22:17:33 model(javabe)与view层交互 view(视图层,html.jsp) controller(控制层,处理用户提交的信息 ...
- <转>ASP.NET学习笔记之MVC 3 数据验证 Model Validation 详解
MVC 3 数据验证 Model Validation 详解 再附加一些比较好的验证详解:(以下均为引用) 1.asp.net mvc3 的数据验证(一) - zhangkai2237 - 博客园 ...
- 【Spring学习笔记-MVC-11--】Spring MVC之表单标签
一.使用方法 1.要使用Spring MVC提供的表单标签,首先需要在视图页面添加: <%@ taglib prefix="form" uri="http://ww ...
- beego学习笔记(2)
BEEGO的几个特点: 简单化 RESTful 支持.MVC 模型,可以使用 bee 工具快速地开发应用,包括监控代码修改进行热编译.自动化测试代码以及自动化打包部署. 智能化 支持智能路由.智能监控 ...
随机推荐
- APIO2019游记
Day -n~Day -2 文化课好难啊.. Day -1~Day 0 颓颓颓 Day 1 人生第一次用Linux 根本不会 早上刚学会怎么编译 不到1h就上考场实战了 开始之后写了读优 一直编译失败 ...
- java GC jvm 内存分布 和新生代,老年代,永久代,(详细)
如果大家想深入的了解JVM,可以读读周志明<深入理解Java虚拟机:JVM高级特性与最佳实践> 需要掌握的东西,包括以下内容.判断对象存活还是死亡的算法(引用计数算法.可达性分析算法).常 ...
- Android 开发基础入门篇: 复制一个工程作为一个新的工程
说明 咱们做项目很多时候都需要复制一份工程出来作为一个新的工程 把第一节的工程拷贝到这一节 修改工程名字 打开软件导入此工程 修改包名 第一节的时候说了,一个APP一个包名 自行添加修改 自行修改 自 ...
- 云服务器使用: 购买域名,域名绑定IP
有没有不知道域名是什么的,但是大家一定知道访问域名就是访问绑定在域名上的IP地址 域名有个好处就是一个域名可以绑定多个IP. 举个例子:百度的域名是https://www.baidu.com/ 然后咱 ...
- Vue实践TS中的一些常见错误解决方案
mixin报错 import { Component, Prop, Vue ,Mixins} from 'vue-property-decorator' import httpminix from ' ...
- 基于Linux(中标麒麟)上QT的环境搭建
最近由于公司需要,需要在中标麒麟上进行QT的二次开发,但是网上的资料很少,就算是有也基本都是其他的版本的Linux上的搭建.中标麒麟本身的资料也很好,而且还只能试用60天. 下面就介绍下我对此环境的搭 ...
- nmap 速查手册
0x00:说明 只是一个快速查询手册,理论的东西都没有补充,欢迎大家积极在评论区补充自己常用的参数,O(∩_∩)O 0x01:nmap功能介绍 1.主机存活检测2.端口探测3.服务识别4.操作系统识 ...
- Salesforce 开发整理(二)报表开发学习
Salesforce提供了强大的报表功能,支持表格.摘要.矩阵以及结合共四种形式,本文探讨在站在开发的角度要如何理解报表. 一:查询报表基本信息报表在Sales force中是Report对象,基本的 ...
- windows server 2008的系统备份
添加windows server backup功能,打开运行“服务器管理器”->“功能”选项, 点击“添加功能”,选择“Windows Server Backup”,选择下一步安装该功能. 点击 ...
- 「HAOI2015」树上操作(非树剖)
题目链接(luogu) 看到标签::树链剖分,蒟蒻Sy开始发抖,不知所措,但其实,本题只需要一个恶心普通的操作就可以了!! 前提知识:欧拉序 首先我们知道dfs序,就是在dfs过程中,按访问顺序进行编 ...