beego项目简单案例

先创建一个beego项目
项目结构
在这里插入图片描述
1.conf
这个目录做一些配置,项目名称、不同运行环境端口、数据库用户名、密码、端口,开启调试等

appname = myapp1
runmode = dev
[dev]
httpport=8080
[prod]
httpport=8081
[test]
httpport = 8082
mysqladdr="127.0.0.1
mysqlport=9090
mysqluser=root
mysqlpassword=123456
copyrequestbody=true

2.路由配置
controller的名称、方式为get还是post
router.go

package routers

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


func init() {

    beego.Router("/index", &controllers.MainController{},"post:Post")
    beego.Router("/",&controllers.MainController{},"get:Get;post:Post")
	beego.Router("/index1",&controllers.MainController{},"get:Get")
	beego.Router("/index2",&controllers.MainController{},"*:Get")
    beego.Router("/test",&controllers.TestControler{},"get:Get;post:Post")
    beego.Router("/test_input",&controllers.Test_InputController{},"get:Get;post:Post")
    beego.Router("/test_login",&controllers.Test_loginController{},"get:Login;post:Post")
    beego.Router("/testModel",&controllers.Test_ModelController{},"get:Get;post:Post")
	beego.Router("/testModel2",&controllers.TestModel2Controller{},"get:Get;post:Post")
    beego.Router("/login",&controllers.LoginController{},"get:Get;post:Post")
}

3.models层:数据处理
最常用的是操作数据库
user.go

package models

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

type Users struct{
	Id int
	Username string
	Password string
}
var db orm.Ormer
func init(){
	//开启调试模式
	orm.Debug=true
	//获取数据库
	orm.RegisterDataBase("default","mysql","root:123456@tcp(127.0.0.1:3306)/testgo?charset=utf8",30)
	orm.RegisterModel(new(Users))
	db=orm.NewOrm()
	fmt.Println("init success")
}
func AddUsers(users *Users) (int64,error){

	fmt.Println(users.Username,users.Password)


	//id,err:=db.InsertOrUpdate(users)
	id,err:=db.Insert(users)
	fmt.Println(id,err)
	if err!=nil{
		db.Rollback()
	}
	return id,err
}
func ReadAllUser() []Users{
	var users []Users
	qb,_:=orm.NewQueryBuilder("mysql")
	qb.Select("*").From("users")
	sql:=qb.String()
	db.Raw(sql).QueryRows(&users)
	return users
}

4.controller层
这里调用models层方法返回数据,在通过数据方式传递给view层,并指明tpl模板,是view层和models层的桥梁
login.tpl

package controllers

import (
	"github.com/astaxie/beego"
	"myapp1/models"
)

type LoginController struct {
	beego.Controller
}
func (c *LoginController) Get(){
	c.Data["website"]="https://www.baidu.com"
	c.Data["isDisplay"]=false
	c.Data["content1"]="content1"
	c.Data["content2"]="content2"
	users:=models.ReadAllUser()

	c.Data["users"]=users
	c.Data["len"]= len(users)
	c.TplName="login.tpl"
}

5.view层,接受controller传递的数据,显示到网页
login.tpl

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>

        body{
            //background-color: #00FFFF;
        }

    </style>
</head>
<body>
    <form action="" method="post">
        用户名:<input type="text" name="username"/><br>
        密码:<input type="password"  name="password"/><br>
        <input type="submit" value="登录">


    </form><br>
    <div>


        <a href="{{.website}}">{{.website}}}</a>
    </div>
    <div>
        {{if .isDisplay}}
            <em>{{.content1}}</em>
        {{else}}
            <em>{{.content2}}</em>
        {{end}}
        <h2>Users表</h2>
        <table border="1">

        <tr><th>Id</th><th>username</th><th>Password</th></tr>



        {{range .users}}
            <tr> <td>{{.Id}}</td><td>{{.Username}}</td><td>{{.Password}}</td></tr>

        {{end}}
        </table>




    </div>
</body>
</html>

运行结果如下
在这里插入图片描述

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值