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:




    
    标签
    


{{template "block/nav.html" .}}

标签

{{range $k,$v := .Tags}} {{end}}

四、运行

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

Goweb开发之Beego框架实战:第十三节 标签功能开发_第1张图片

你可能感兴趣的:(716466308:资源交流群)