天天看点

Goweb开发之Beego框架实战:第十三节 标签功能开发

上节课内容我们实现了删除文章的操作,本节课我们继续进行相关功能开发。当我们点击标签按钮的时候,应该要显示每个标签对应了多少篇文章。

一、Model

当点击标签的时候,需要查询出数据库中所有的标签,然后再统计出每个标签的文章总量,显示到前端页面上。

所以我们应该先查询出数据库中所有的标签。

在article_model.go文件中,加入以下代码,先查询出所有的标签。

//查询标签,返回一个字段的列表
func QueryArticleWithParam(param string) []string {
    rows, err := utils.QueryDB(fmt.Sprintf("select %s from article", param))
    if err != nil {
        log.Println(err)
    }
    var paramList []string
    for rows.Next() {
        arg := ""
        rows.Scan(&arg)
        paramList = append(paramList, arg)
    }
    return paramList
}
           

然后再models目录下,创建一个新的model文件:tags_model.go

package models
​
import "strings"
​
func HandleTagsListData(tags []string) map[string]int {
    var tagsMap = make(map[string]int)
    for _, tag := range tags {
        tagList := strings.Split(tag, "&")
        for _, value := range tagList {
            tagsMap[value]++
        }
    }
    return tagsMap
}
           

二、Controller

接下来,我们在controllers目录下新建一个controller的go文件,tags_controller.go。

package controllers
​
import (
    "myblogweb/models"
    "fmt"
)
​
type TagsController struct {
    BaseController
}
​
func (this *TagsController) Get() {
    tags := models.QueryArticleWithParam("tags")
    fmt.Println(models.HandleTagsListData(tags))
    this.Data["Tags"] = models.HandleTagsListData(tags)
    this.TplName = "tags.html"
}
           

并且在router.go中注册新的路由:

//标签
beego.Router("/tags", &controllers.TagsController{})
           

三、Views

最后我们去写前端页面,来接收数据。

在views包下,新建一个html文件,tags.html:

<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <title>标签</title>
    <link href="../static/css/blogsheet.css" target="_blank" rel="external nofollow"  rel="stylesheet">
</head>
<body>
{{template "block/nav.html" .}}
<div id="main">
    <h1>标签</h1>
    <div id="tags-list">
    {{range $k,$v := .Tags}}
        <div><a href="/?tag={{$k}}" target="_blank" rel="external nofollow" ><span class="global-color">{{$k}}</span> 有{{$v}}篇文章</a></div>{{end}}
    </div>
</div>
</body>
</html>
           

四、运行

重新启动项目后,在浏览器中点击标签按钮:

Goweb开发之Beego框架实战:第十三节 标签功能开发