beego框架中模型的创建及orm数据库操作并实现注册_登录_查询列表功能
学习go语言beego框架,话不多说,接着上一篇博文往下看
实现功能:model添加,注册/登录/查询列表等功能
1.mode创建 我这里以users表为例
在models目录下创建user.go文件作为user表的模型:
package models
import (
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)
//全局连接实例
var (
db orm.Ormer
)
//由于model这个名字叫 Users 那么操作的表其实 users
type Users struct {
Id int64
Name string
Email string
Password string
Created_at string
}
//实例
func init() {
orm.Debug = true // 是否开启调试模式 调试模式下会打印出sql语句
orm.RegisterDataBase("default", "mysql", "root:Cbb_0721!@#[email protected](192.168.1.140:3306)/laravel?charset=utf8", 30)
orm.RegisterModel(new(Users))
db = orm.NewOrm()
}
//方法 添加
func AddUser(users *Users) (int64, error) {
id, err := db.Insert(users)
return id, err
}
2.注册、登录、查询列表路由
在routers目录的router.go文件添加
package routers
import (
"gblog/controllers"
"github.com/astaxie/beego"
)
func init() {
beego.Router("/", &controllers.MainController{})
beego.Router("/user", &controllers.UserController{}, "get:Get")
beego.Router("/reg", &controllers.UserController{}, "get:Reg")
beego.Router("/register", &controllers.UserController{}, "post:Register")
beego.Router("/login", &controllers.UserController{}, "get:Login")
beego.Router("/info", &controllers.UserController{}, "post:Info")
beego.Router("/infolist", &controllers.UserController{}, "get:InfoList")
beego.BConfig.EnableGzip = true
beego.BConfig.RouterCaseSensitive = true
beego.BConfig.MaxMemory = 1 << 26
beego.BConfig.WebConfig.AutoRender = true
beego.BConfig.CopyRequestBody = true
}
3.注册/登录模板的创建,就是html/js/css代码
在view目录下创建register.html、login.html模板文件
register.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册页面</title>
</head>
<body>
<h1>注册页面</h1>
<form method="post" action="/register">
用户名:<input type="text" name="name"> <p></p>
   邮箱:<input type="text" name="email"> <p></p>
   密码:<input type="password" name="password"><p></p>
<input type="submit" name="注册" style="margin-left: 190px;">
</form>
</body>
</html>
login.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登陆</title>
</head>
<body>
<h1>登陆界面</h1>
<form method="post" action="/info">
用户名:<input type="text" name="name"><p></p>
   密码:<input type="password" name="password"><p></p>
<input type="submit" value="登陆" style="margin-left: 190px;">
</form>
</body>
</html>
4.注册/登录/查询列表 功能 (注意:功能我就不分开写了,里面都有备注,有其他框架基础的话看一眼就会觉得有点熟悉)
在controllers目录创建user.go文件作为user控制器
package controllers
import (
"gblog/models"
"time"
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)
// UserController is a user control
type UserController struct {
beego.Controller
}
//注册页模板
func (c *UserController) Reg() {
c.TplName = "register.html" //只有加了这句,前端才会跳转到注册页面
}
//注册用户 模型添加数据
func (c *UserController) Register() {
//1.拿到数据
name := c.GetString("name")
email := c.GetString("email")
password := c.GetString("password")
//2.对数据进行校验
if name == "" && email == "" && password == "" {
beego.Info("数据不能为空")
c.Redirect("/reg", 302) //重定向函数,如果发生错误页面重新回到注册页,并返回错误码302
return
}
//24小时制
timeObj := time.Now()
var str = timeObj.Format("2006-01-02 15:04:05")
user := models.Users{Name: name, Email: email, Password: password, Created_at: str}
models.AddUser(&user)
c.Ctx.WriteString("注册成功!")
}
//登录页模板
func (c *UserController) Login() {
c.TplName = "login.html"
}
//单条数据查询
func (c *UserController) Info() {
//获取get值
name := c.GetString("name")
password := c.GetString("password")
//2.判断数据是否合法
if name == "" || password == "" {
beego.Info("输入数据不合法")
c.TplName = "login.html"
return
}
//3.查询账号密码是否正确
o := orm.NewOrm()
user := models.Users{}
user.Name = name
user.Password = password
err := o.Read(&user, "Name", "Password")
if err != nil {
beego.Info("查询失败")
c.TplName = "login.html"
return
}
//4.跳转
c.Ctx.WriteString("登陆成功,老铁欢迎您")
c.Data["json"] = user
c.ServeJSON()
c.StopRun()
}
//使用原生sql进行列表数据查询
func (c *UserController) InfoList() {
o := orm.NewOrm()
var maps []orm.Params
sql := `select * from users`
o.Raw(sql).Values(&maps)
c.Data["json"] = maps
c.ServeJSON()
}
5.最后看看效果
注册:
登录:
查询列表: (就的数据集 这个就不截图了有点长)
url:http://127.0.0.1:8080/infolist
[
{
"created_at": "2020-09-25 03:37:38",
"current_team_id": null,
"email": "[email protected]",
"email_verified_at": null,
"id": "1",
"name": "admin",
"password": "$2y$10$QKXE9t9l65cb3Vztes6S8eh/7uCG4jEigt8/MAKbgHEl8sLrxPfwC",
"profile_photo_path": "profile-photos/726sxzkRKwn1lszPOApcL4gYrRTFlhC39MEc1Ku6.gif",
"remember_token": null,
"subscribe": "1",
"two_factor_recovery_codes": null,
"two_factor_secret": null,
"updated_at": "2020-09-30 02:15:43"
},
{
"created_at": "2020-09-30 06:00:25",
"current_team_id": null,
"email": "[email protected]",
"email_verified_at": null,
"id": "2",
"name": "站长小号",
"password": "$2y$10$jkNk1ZD5THGCP5vmOcWd.e2rVqADywFAOgCgAJRdnBS4TZQC94jBe",
"profile_photo_path": null,
"remember_token": null,
"subscribe": "0",
"two_factor_recovery_codes": null,
"two_factor_secret": null,
"updated_at": "2020-09-30 06:00:25"
},
{
"created_at": "2020-09-30 06:00:25",
"current_team_id": null,
"email": "[email protected]",
"email_verified_at": null,
"id": "3",
"name": "站长二号",
"password": "$2y$10$jkNk1ZD5THGCP5vmOcWd.e2rVqADywFAOgCgAJRdnBS4TZQC94jBe",
"profile_photo_path": null,
"remember_token": null,
"subscribe": "0",
"two_factor_recovery_codes": null,
"two_factor_secret": null,
"updated_at": "2020-09-30 06:00:25"
},
{
"created_at": "2020-12-11 13:52:18",
"current_team_id": null,
"email": "[email protected]",
"email_verified_at": null,
"id": "7",
"name": "测试",
"password": "123456",
"profile_photo_path": null,
"remember_token": null,
"subscribe": "0",
"two_factor_recovery_codes": null,
"two_factor_secret": null,
"updated_at": null
}
]
相关文章