版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/The_Reader/article/details/82228750
新建一个controller文件,当用户访问http://localhost:8080/registe这个地址时 提交get,get方法返回一个页面让用户填写数据并post提交,post获得数据,并解析,我写了两种方式,一个是,根据关键词,并初始化一个新的结构体,让其插入到数据库中,
package controllers
import (
"github.com/astaxie/beego"
"fmt"
_ "demo2/models"
"demo2/models"
"github.com/astaxie/beego/orm"
)
type Demo4Controlle struct {
beego.Controller
}
func (this *Demo4Controlle) Get() {
this.TplName = "register.html"
}
func (this *Demo4Controlle)Post(){
user := models.User{}
err := this.ParseForm(&user)
if err!= nil {
this.Ctx.WriteString("获取表格失败!"+fmt.Sprint(err))
}else {
orm:=orm.NewOrm()
_, e := orm.Insert(&user)
if e != nil {
this.Ctx.WriteString("插入失败!" + fmt.Sprint(e))
} else {
this.Ctx.WriteString("插入成功!")
}
}
}
func (this *Demo4Controlle) Post1() {
name := this.GetString("name")
nickname := this.GetString("nickname")
password := this.GetString("password")
age, e := this.GetInt("age")
if e != nil {
this.Ctx.WriteString("年龄获取失败!" + fmt.Sprint(e))
}
sex, e1 := this.GetBool("sex")
if e1 != nil {
this.Ctx.WriteString("获取性别失败!")
}
var user = models.User{Name:name, NickName:nickname, Password:password, Age:age, Sex:sex}
orm := orm.NewOrm()
_, i2 := orm.Insert(&user)
if i2 != nil {
this.Ctx.WriteString("插入失败!" + fmt.Sprint(i2))
} else {
this.Ctx.WriteString("插入成功!")
}
}
注册路由
//注册
beego.Router("/registe",&controllers.Demo4Controlle{})
用户访问时,获得这个页面,这个页面默认存放在view模块下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>register</title>
</head>
<body>
<form action="registe" method="post">
<form>
<table>
<thead>注册</thead>
<tbody>
<tr>
<td>
<label for="name">姓名:</label>
<input type="text" name="name" id="name">
</td>
</tr>
<tr>
<td>
<label for ="nickname">昵称:</label>
<input type="text" name = "nickname" id="nickname">
</td>
</tr>
<tr>
<td>
<label for = "password">密码:</label>
<input type="password" name = "password" id="password">
</td>
</tr>
<tr>
<td>
<label for = "age">年龄:</label>
<input type="text" name = "age" id="age">
</td>
</tr>
<tr>
<td>
<label for = "man">男:</label>
<input type="radio" id="man" value="true" name="sex" >
<label for = "women">女:</label>
<input type="radio" id="women" name ="sex" value="false" >
</td>
</tr>
<tr>
<td>
<input type="submit" value="提交">
<input type="reset" value="重置">
</td>
</tr>
</tbody>
</table>
</form>
</form>
</body>
</html>
在model中新建一个文件,`form:"name"`这个是表明表格中的关键字是name对应着结构体中Name,也可以在html文件中将关键字定义为Name,这样就不用声明了。
package models
import (
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
_"github.com/go-sql-driver/mysql"
)
type User struct {
Id int
Name string `form:"name"`
NickName string`form:"nickname"`
Password string`form:"password"`
Age int`form:"age"`
Sex bool`form:"sex"`
}
func init(){
db_name:=beego.AppConfig.String("db_name")
db_user := beego.AppConfig.String("db_user")
db_password := beego.AppConfig.String("db_password")
db_host := beego.AppConfig.String("db_host")
db_port := beego.AppConfig.String("db_port")
//root:123456@tcp(localhost:3306)/user?charset=utf8
url:=db_user+":"+db_password+"@tcp("+db_host+":"+db_port+")/"+db_name+"?charset=utf8"
orm.RegisterDataBase("default","mysql",url,30)
orm.RegisterModel(new(User))
orm.RunSyncdb("default",true,true)
}