首页 后端开发 Golang Beego开发实践——从发布博客到在线商城

Beego开发实践——从发布博客到在线商城

Jun 23, 2023 am 10:58 AM
在线商城 beego 发布博客

Beego是一个基于Go语言的Web开发框架,它有着简单易用、高效稳定、快速开发的特点,被越来越多的开发者所青睐和使用。在本篇文章中,将介绍如何使用Beego框架从发布博客到建立在线商城。

一、博客发布

  1. Beego的安装和配置

首先,我们需要在本地环境中安装和配置Beego框架。可以通过以下命令进行安装:

1

2

go get -u github.com/astaxie/beego

go get -u github.com/beego/bee

登录后复制

安装完成后,通过bee new命令创建一个新项目,如下:

1

bee new blog

登录后复制

在生成的项目中,config文件夹中的app.conf文件是Beego的主要配置文件,我们可以在其中进行端口、数据库、日志等方面的配置。

  1. 编写代码

在生成的项目中,controllers文件夹中的文件是Beego的控制器代码,我们可以在其中编写我们需要的业务逻辑。例如,我们需要创建一个博客的model和controller:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

// models/blog.go

type Blog struct {

    Id int

    Title string

    Content string

    Created time.Time

}

 

// controllers/blog.go

type BlogController struct {

    beego.Controller

}

 

func (this *BlogController) Get() {

    // 查询所有博客并渲染到页面

    blogs := models.GetAllBlogs()

    this.Data["blogs"] = blogs

    this.TplName = "blog.tpl"

}

 

func (this *BlogController) Post() {

    // 新建一篇博客

    title := this.GetString("title")

    content := this.GetString("content")

 

    blog := models.Blog{

        Title:   title,

        Content: content,

        Created: time.Now(),

    }

 

    models.AddBlog(&blog)

 

    this.Redirect("/blog", 302)

}

登录后复制

在以上代码中,我们创建了一个Blog的model,在controller中实现了获取所有博客和新增博客的逻辑。

  1. 视图渲染

Beego使用Go语言的模板引擎来实现视图渲染,视图文件通常保存在views文件夹中。在本例中,我们可以创建一个blog.tpl文件,渲染页面显示博客列表和新增博客的表单:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<!DOCTYPE html>

<html>

<head>

    <title>Blog</title>

</head>

<body>

    <h1>All Blogs</h1>

    {{range .blogs}}

        <h2>{{.Title}}</h2>

        <p>{{.Content}}</p>

        <p>{{.Created}}</p>

    {{end}}

    <h1>New Blog</h1>

    <form method="post" action="/blog">

        <label>Title:</label>

        <input type="text" name="title"/><br/>

        <label>Content:</label>

        <textarea name="content"></textarea>

        <br/>

        <input type="submit" name="submit" value="Submit"/>

    </form>

</body>

</html>

登录后复制

其中,{{range .blogs}}语句用来循环渲染所有博客,{{.Title}}、{{.Content}}、{{.Created}}语句用来渲染具体的博客信息。

  1. 运行程序

运行程序前需要先创建或配置好数据库,可以在app.conf文件中设置数据库连接信息。在完成配置后,使用以下命令运行程序:

1

bee run

登录后复制
登录后复制

在浏览器中访问localhost:8080/blog即可查看博客列表。

二、在线商城

除了博客发布功能,我们还可以使用Beego框架来开发在线商城。以下是一个简单的示例。

  1. Beego的安装和配置

同样,我们需要先在本地环境中安装和配置Beego框架,在本例中,我们使用如下命令安装:

1

2

go get github.com/astaxie/beego

go get github.com/beego/bee

登录后复制

并通过bee new命令来创建一个新项目:

1

bee new shop

登录后复制

在生成的项目中,config文件夹中的app.conf文件是Beego的主要配置文件。我们可以在其中进行端口、数据库、日志等方面的配置。

  1. 编写代码

在生成的项目中,controllers文件夹中的文件是Beego的控制器代码,我们可以在其中编写我们需要的业务逻辑。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

// models/goods.go

type Goods struct {

    Id int

    Name string

    Price float64

    Created time.Time

}

 

// controllers/default.go

type MainController struct {

    beego.Controller

}

 

func (c *MainController) Get() {

    c.Data["Website"] = "myshop"

    c.Data["Email"] = "myshop@gmail.com"

    c.TplName = "index.tpl"

}

 

type GoodsController struct {

    beego.Controller

}

 

func (this *GoodsController) Add() {

    name := this.GetString("name")

    price, _ := this.GetFloat("price", 0.0)

 

    goods := models.Goods{

        Name:      name,

        Price: price,

        Created: time.Now(),

    }

 

    models.AddGoods(&goods)

 

    this.Redirect("/", 302)

}

 

func (this *GoodsController) GetAll() {

    goods := models.GetAllGoods()

    this.Data["json"] = &goods

    this.ServeJSON()

}

登录后复制

以上代码中我们创建了一个Goods的model,在controller中实现了获取所有商品、新增商品的逻辑。在MainController中实现了展示首页的逻辑。

  1. 数据库操作

在添加、获取商品时,我们需要连接数据库,可以通过Beego自带的ORM来实现。在models文件夹中新建一个database.go文件,实现初始化数据库的连接:

1

2

3

4

5

6

7

8

9

10

11

package models

 

import (

    "github.com/astaxie/beego/orm"

    _ "github.com/go-sql-driver/mysql"

)

 

func RegisterDB() {

    orm.RegisterDriver("mysql", orm.DRMySQL)

    orm.RegisterDataBase("default", "mysql", "root:@tcp(127.0.0.1:3306)/shop?charset=utf8", 30)

}

登录后复制

在添加新商品和获取商品时,我们可以通过如下代码实现:

1

2

3

4

5

6

7

8

9

10

11

12

13

func AddGoods(goods *Goods) (int64, error) {

    if err := orm.NewOrm().Read(&goods); err == nil {

        return 0, errors.New("Goods already exists")

    }

    id, err := orm.NewOrm().Insert(goods)

    return id, err

}

 

func GetAllGoods() []*Goods {

    var goods []*Goods

    orm.NewOrm().QueryTable("goods").All(&goods)

    return goods

}

登录后复制
  1. 视图渲染

Beego使用Go语言的模板引擎来实现视图渲染,视图文件通常保存在views文件夹中。在本例中,我们可以创建一个index.tpl文件,展示在线商城首页:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

<!DOCTYPE html>

<html>

<head>

    <title>{{.Website}}</title>

</head>

<body>

    <h1>Welcome to {{.Website}}!</h1>

    <h2>Add Goods:</h2>

    <form action="/goods/add" method="post">

        <input type="text" name="name">

        <input type="number" name="price" step="0.01">

        <input type="submit" value="Add">

    </form>

    <h2>All Goods:</h2>

    <table border="1">

        <tr>

            <td>Id</td>

            <td>Name</td>

            <td>Price</td>

            <td>Created</td>

        </tr>

        {{range .goods}}

        <tr>

            <td>{{.Id}}</td>

            <td>{{.Name}}</td>

            <td>{{.Price}}</td>

            <td>{{.Created}}</td>

        </tr>

        {{end}}

    </table>

</body>

</html>

登录后复制

其中,{{range .goods}}语句用来循环渲染所有商品。

  1. 运行程序

在完成代码和模板的编写后,使用以下命令启动程序:

1

bee run

登录后复制
登录后复制

在浏览器中访问localhost:8080,即可查看在线商城首页,添加商品并查看所有商品。可以通过运行如下命令生成自包含的可执行文件:

1

bee pack

登录后复制

以上就是使用Beego框架从发布博客到在线商城的完整实践过程,希望对正在学习Beego的开发者有所帮助。

以上是Beego开发实践——从发布博客到在线商城的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在Beego中使用Prometheus和Grafana实现监控和报警 在Beego中使用Prometheus和Grafana实现监控和报警 Jun 22, 2023 am 09:06 AM

在Beego中使用Prometheus和Grafana实现监控和报警

五个精选的Go语言开源项目,带你探索技术世界 五个精选的Go语言开源项目,带你探索技术世界 Jan 30, 2024 am 09:08 AM

五个精选的Go语言开源项目,带你探索技术世界

Go语言开发必备:5个热门框架推荐 Go语言开发必备:5个热门框架推荐 Mar 24, 2024 pm 01:15 PM

Go语言开发必备:5个热门框架推荐

在Beego中使用Google Analytics统计网站数据 在Beego中使用Google Analytics统计网站数据 Jun 22, 2023 am 09:19 AM

在Beego中使用Google Analytics统计网站数据

在Beego中使用Kong进行API网关管理 在Beego中使用Kong进行API网关管理 Jun 22, 2023 pm 05:13 PM

在Beego中使用Kong进行API网关管理

Beego中的错误处理——防止应用崩溃 Beego中的错误处理——防止应用崩溃 Jun 22, 2023 am 11:50 AM

Beego中的错误处理——防止应用崩溃

在Beego中使用ZooKeeper和Curator进行分布式协调和管理 在Beego中使用ZooKeeper和Curator进行分布式协调和管理 Jun 22, 2023 pm 09:27 PM

在Beego中使用ZooKeeper和Curator进行分布式协调和管理

在Beego中使用Docker和Kubernetes进行生产部署和管理 在Beego中使用Docker和Kubernetes进行生产部署和管理 Jun 23, 2023 am 08:58 AM

在Beego中使用Docker和Kubernetes进行生产部署和管理

See all articles