beego框架实战

boogo框架运行流程详解

1、程序运行,首先会运行main.go

package main

import (
    _ "test/routers"  // _ 表示运行的时候首先会调用routers中的init函数
    _ "test/models" 
    "github.com/astaxie/beego"
)

func main() {
    beego.Run()
}

main 运行时,首先看到 _ "test/routers",然后回去调用routers中的init函数

2、打开routers.go

package routers

import (
    "test/controllers"   
    "github.com/astaxie/beego"
)

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

当浏览器时,会传递给router两个参数,第一个参数是路径,第二个参数是请求方法,比如:当浏览器访问http://127.0.0.1:8080/ ,那么访问的路径为“/”,请求方法为get,然后router就会调用init函数中的 beego.Router("/", &controllers.MainController{}),然后&controllers.MainController{}运行controllers。

3、打开controllers/default.go。

package controllers

import (
    "github.com/astaxie/beego"
    "github.com/astaxie/beego/orm"
)

type MainController struct {
    beego.Controller   // 重载Controller函数
}


// 如router传递的参数为get,则调用get方法
func (c *MainController) Get() {    

    c.Data["Website"] = "beego.me"
    c.Data["data"] = "get请求"
    c.TplName = "index.tpl"
}

// 如router传递的参数为post,则调用post方法
func (c *MainController) Post() {
    c.Data["Website"] = "beego.me"
    c.Data["data"] = "post请求"
    c.TplName = "test.html"
}

router传递 “get” 参数给 controllers, controller调用 Get()方法,渲染index.tpl 并将c.Data作为数据传递给index.tpl,并在浏览器中显示。

modles模块

modles模块用来映射数据库。

go get github.com/Go-SQL-Driver/MySQL
go install github.com/Go-SQL-Driver/MySQL

1.在modles目录下创建modle.go文件

package models

import (

    "github.com/astaxie/beego/orm"
    _ "github.com/Go-SQL-Driver/MySQL"
)

// 表的设计,定义表名为User,字段为Id,Name,Pwd
type User struct {
    Id int
    Name string
    Pwd string
}
/* 多个表就定义多个struct
type Other struct {
    Other string
}
*/
func init ()  {
    // 设置数据库基本信息,
    orm.RegisterDataBase("default","mysql","Rootmaster:Rootmaster@777@tcp(10.0.1.111:3307)/test?charset=utf8")
    // 映射modle数据库,(new(User),new(Other))多个表的写法。
    orm.RegisterModel(new(User))
    // 生成表
    orm.RunSyncdb("default",false,true)  
}

然后mysql中要先创建表test。

2.在controllers/defaults.go文件中创建orm对象。

可以添加到get()方法中,每次刷新浏览器都会插入一条数据。
func (c *MainController) Get() {
    // 1.创建orm对象
    o := orm.NewOrm()

    // 2.实例化
    user := models.User{}

    // 3.对插入结构体赋值
    user.Name="steven"
    user.Pwd="steven123"

    // 4.插入
    _,err :=o.Insert(&user)
     if err != nil{
        beego.Info("插入失败",err)
        return
     }

    c.Data["Website"] = "beego.me"
    c.Data["data"] = "get方法"
    c.TplName = "index.tpl"
}

你可能感兴趣的:(beego框架实战)