beego建立專案流程

weixin_34138139發表於2019-01-04

第一步

func init() {

    beego.Router("/", &controllers.MainController{})

    //建立一個訪問首頁的路由

    beego.Router("/register",&controllers.UserController{},"get:ShowRegister")

}

router路由,在路由下建立一個指定一個訪問首頁的控制器

第二步

//建立一個公共類以供路由呼叫
type UserController struct {
    //繼承beego的控制器函式
    beego.Controller
}
//建立一個展示首頁的方法
func (th*UserController)ShowRegister()  {
    //指定一個檢視檔案,來輸出資料
    th.TplName ="register.html"

}

控制器內新建首頁資料夾 穿件輸出首頁方法

第三步

import (
    "github.com/astaxie/beego/orm"
    _"github.com/go-sql-driver/mysql"

)


//建立欄位
type User struct {
    Id int
    UserName string
    Pwd string
}


//建表但步驟
func init()  {
    //連線資料庫                 取別名(預設名稱)
    orm.RegisterDataBase("default","mysql","root:123456@tcp(127.0.0.1:3306)/newsWeb?charset=utf8")
    //建立表名
    orm.RegisterModel(new(User))
    //炮起來(執行操作)
    orm.RunSyncdb("default",false,true)

}

models 模組下建立資料庫連線並建立表

第四步

import (
    _ "newsWeb/routers"
    "github.com/astaxie/beego"
)

func main() {
    beego.Run()
}

第五步

<form  class="login_form" name = "login" method="post" action="/register">

檢視檔案設定請求post

}
func (th *UserController)HandleRegister()  {
    //獲取前端傳遞過來的資料
    //檢視網頁獲取 登陸名和密碼
    userName := th.GetString("userName")
    pwd := th.GetString("password")
    beego.Info(userName,pwd)

    //資料校驗(驗證使用者名稱和密碼防止惡意登陸)
    if userName ==""  || pwd == ""{
        beego.Error("使用者名稱或者密碼不能為空")
        th.TplName = "register.html"
        return
    }
    //把前端的資料插入進資料庫
    //1.獲取orm物件
    o := orm.NewOrm()
    //2.建立表名
    var user models.User
    user.UserName = userName
    user.Pwd = pwd
    //執行插入操作
    count, err := o.Insert(&user)
    if err != nil {
        beego.Error("使用者註冊失敗")
        th.TplName = "register.html"
        return
    }
    beego.Info("插入的資料條數=",count)
    //th.Redirect()     頁面跳轉,會改變頁面路徑
    //th.TplName =      頁面渲染,傳遞資料(錯誤資訊)
    th.Redirect("/login",302)

}

controllers控制器下,獲取資料和把資料插入資料操作

第六步

//建立登陸的路由跳轉
    beego .Router("/login",&controllers.UserController{},"get:ShowLogin;post:HandleLogin")
}

建立路由

func (th *UserController)HandleLogin()  {
    //獲取資料
    userName := th.GetString("userName")
    pwd := th.GetString("password")
    //校驗資料
    if userName == "" || pwd == ""{
        th.Data["err"] = "使用者名稱或者密碼不能為空"
        th.TplName = "login.html"
        return
    }
    //資料庫的查詢操作
    //1.獲取orm物件
    o := orm.NewOrm()
    //2.獲取資料表名
    var user models.User
    //3.把前端傳來的資料付給資料庫
    user.UserName = userName
    //核對資料
    err := o.Read(&user, "userName")
    if err != nil {
        th.Data["err"] = "使用者名稱不存在"
        th.TplName = "login.html"
        return
    }
    if user.Pwd != pwd{
        th.Data["err"] = "密碼錯誤"
        th.TplName = "login.html"
        return
    }
    //返回資料
    th.Ctx.WriteString("登陸成功")
}

controllers 控制器資料處理

相關文章