beego的快速使用(一)
【摘要】 简介beego是一款开源的web框架,笔者以前在做一个页面极少的工具软件时候试水过,本文讲解如何入门使用beego 安装beego安装go语言支持安装/升级beego# 安装GO111MODULE=on go get github.com/astaxie/beegoGO111MODULE=on go get github.com/beego/beeGO111MODULE=off go g...
简介
beego是一款开源的web框架,笔者以前在做一个页面极少的工具软件时候试水过,本文讲解如何入门使用beego
安装beego
-
安装go语言支持
-
安装/升级beego
# 安装
GO111MODULE=on go get github.com/astaxie/beego
GO111MODULE=on go get github.com/beego/bee
GO111MODULE=off go get -u github.com/beego/bee
# 升级
go get -u github.com/astaxie/beego
go get -u github.com/beego/bee
cd $GOPATH/bin/
mkdir -p github.com/astaxie
cd github.com/astaxie
git clone https://github.com/astaxie/beego.git
go get -u github.com/astaxie/beego
go get -u github.com/beego/bee
新建项目
- 输入如下名创建项目
cd $GOPATH/src
# export GO111MODULE=auto
# 新建项目
bee new quickstart
cd quickstart
go mod init
# 运行项目
bee run
-
访问服务器http://localhost:8080/,如果能够正常看到页面则操作成功
-
项目建立成功后,会有如下目录
./
├── conf # 配置文件
│ └── app.conf
├── controllers # 控制类所在目录
│ └── default.go
├── go.mod # 模块依赖关系管理
├── go.sum #
├── hello
├── main.go # 入口函数
├── models # 模型函数
├── routers
│ └── router.go # 路由控制函数
├── static # 静态资源
│ ├── css
│ ├── img
│ └── js
│ └── reload.min.js
├── tests # 测试函数目录
│ └── default_test.go
└── views # 视图
└── index.tpl
beego的路由
路由函数
routers/router.go
路由控制文件,用它来控制路由路径和控制类之间的关系。
package routers
import (
"hello/controllers"
"github.com/astaxie/beego"
)
func init() {
//路由指向 URL : http://localhost:8080/ ,MainController.Get 函数
beego.Router("/", &controllers.MainController{})
//路由指向 URL : http://localhost:8080/hi ,MainController.Hi 函数
beego.Router("/hi",&controllers.MainController{},"get:Hi")
}
控制类
controllers/default.go
是默认的控制类文件
package controllers
import (
"fmt"
"github.com/astaxie/beego"
)
type MainController struct {
beego.Controller
}
func (c *MainController) Get() {
//c.Data赋值的数据到前端视图上可以访问
c.Data["Website"] = "beego.me"
c.Data["Email"] = "astaxie@gmail.com"
//指定对应的前端视图
c.TplName = "index.tpl"
}
func (c * MainController) Hi(){
fmt.Print("hi console.")
// 这里没有指定前端视图,访问的时候会报错
}
视图文件
<!DOCTYPE html>
<html>
<head>
<title>Beego</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
*,body {
margin: 0px;
padding: 0px;
}
body {
margin: 0px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 20px;
background-color: #fff;
}
header,
footer {
width: 960px;
margin-left: auto;
margin-right: auto;
}
header {
padding: 100px 0;
}
footer {
line-height: 1.8;
text-align: center;
padding: 50px 0;
color: #999;
}
.description {
text-align: center;
font-size: 16px;
}
a {
color: #444;
text-decoration: none;
}
.backdrop {
position: absolute;
width: 100%;
height: 100%;
box-shadow: inset 0px 0px 100px #ddd;
z-index: -1;
top: 0px;
left: 0px;
}
</style>
</head>
<body>
<header>
<h1 class="logo">Welcome to Beego</h1>
<div class="description">
Beego is a simple & powerful Go web framework which is inspired by tornado and sinatra.
</div>
</header>
<footer>
<div class="author">
Official website:
<!-- {{.Website}}是在控制类传入的变量 -->
<a href="http://{{.Website}}">{{.Website}}</a> /
Contact me:
<a class="email" href="mailto:{{.Email}}">{{.Email}}</a>
</div>
</footer>
<div class="backdrop"></div>
<script src="/static/js/reload.min.js"></script>
</body>
</html>
使用mysql
前面开始使用beego简单的创建了一个项目,并且实现了一个控制类在像前段传递参数,下面我们介绍如何在beego中使用Mysql,新建一个名字为db1的数据库编码格式使用utf8 ,使用如下脚本初始化mysql数据库
DROP TABLE IF EXISTS `USER`;
CREATE TABLE `USER`(
ID INT NOT NULL AUTO_INCREMENT COMMENT '主键',
NAME VARCHAR(45) DEFAULT '' COMMENT '名称',
SEX TINYINT NOT NULL DEFAULT 0 COMMENT '性别0女,1男',
PRIMARY KEY (`ID`)
);
INSERT INTO USER (NAME,SEX)VALUES('邱家洪',1),('nick',1),('elaine',0);
- 安装依赖包
go get github.com/go-sql-driver/mysql
- 新建一个模型文件
models/testuser.go
package models
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func PrintUsers() {
var db, err = sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/db1?charset=utf8")
//延迟关闭
defer db.Close()
if err != nil {
return
}
stmt, err := db.Prepare("select * from user limit 10")
//延迟关闭
defer stmt.Close()
if err != nil {
return
}
rows, err := stmt.Query()
defer rows.Close()
if err != nil {
return
}
for rows.Next() {
var id int
var name string
var sex int8
rows.Scan(&id, &name, &sex)
fmt.Println(id, name, sex)
}
}
- 在控制类内调用该模型
controllers/default.go
import (
"fmt"
"hello/models"
"github.com/astaxie/beego"
)
...
func (c * MainController) Hi(){
fmt.Println("hi console.")
models.PrintUsers()
c.TplName = "index.tpl"
}
- 验证,重新启动执行该程序,访问页面
http://localhost:8080/hi
bee run
使用orm连接数据库
- 安装依赖包
go get github.com/astaxie/beego/orm
- 新建一个模型文件
models/testorm.go
package models
import (
"fmt"
"github.com/astaxie/beego/orm"
_"github.com/go-sql-driver/mysql"
)
type User struct {
Id int
Name string
Sex int8
}
func init() {
// 注册一个default database,并且设置最大连接数是30
orm.RegisterDataBase("default","mysql",
"root:123456@tcp(127.0.0.1:3306)/db1?charset=utf8",30)
// 注册Model
orm.RegisterModel(new(User))
// 自动建表
orm.RunSyncdb("default",false,true)
}
func PrintUserByORM() {
o := orm.NewOrm()
user := User{Id: 3}
o.Read(&user)
fmt.Println(user)
}
- 在控制类中使用
controllers/default.go
package models
import (
"fmt"
"github.com/astaxie/beego/orm"
_"github.com/go-sql-driver/mysql"
)
type User struct {
Id int
Name string
Sex int8
}
func init() {
orm.RegisterDataBase("default","mysql",
"root:123456@tcp(127.0.0.1:3306)/db1?charset=utf8",30)
orm.RegisterModel(new(User))
}
func PrintUserByORM() {
o := orm.NewOrm()
user := User{Id: 3}
o.Read(&user)
fmt.Println(user)
}
- 在控制类中使用
controllers/default.go
func (c * MainController) Hi(){
fmt.Println("hi console.")
//models.PrintUsers()
models.PrintUserByORM()
//指定对应的前端视图
c.TplName = "index.tpl"
}
- 验证,重新启动执行该程序,访问页面
http://localhost:8080/hi
bee run
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)