天天看點

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架構實戰:第十三節 标簽功能開發