为了账号安全,请及时绑定邮箱和手机立即绑定

转到 HTML 模板

转到 HTML 模板

Go
呼啦一阵风 2022-12-05 11:13:39
我创建了一个简单的抓取工具,它从网站获取前 10 条新闻并返回包含标题和分数的 JSON。我想将标题和乐谱作为 HTML 模板传递,以便生成网页。我不熟悉模板化 Go 语言,也不知道如何为每个链接传递值。这是我现在应该使用的 HTML 代码和我的实现:<!DOCTYPE html><html>   <head><linkrel="stylesheet" href="https://unpkg.com/mvp.css"      />   </head>   <body>      <h1>{{.PageTitle}}</h1>      <ul>         {{range .Links}}         <li>{{.Title}}: {{.Score}}</li>         {{end}}      </ul>   </body></html>我的代码:package main        import (        "encoding/json"        "html/template"        "log"        "net/http"        "strconv"    )        type TopStories struct {        Title string `json:"title"`        Score int    `json:"score"`    }        type TopStoriesPayload struct {        TopStories []TopStories    }        type NewsScraper struct {        url  string        Data []TopStories    }        type templateData struct {        PageTitle string        Data      []TopStories        }        func NewNewsScraper(url string) *NewsScraper {        return &NewsScraper{url: url}    }        func Top10Stories() []string {        req, err := http.NewRequest("GET", "https://hacker-news.firebaseio.com/v0/topstories.json", nil)        if err != nil {            log.Fatal(err)        }        resp, err := http.DefaultClient.Do(req)        if err != nil {            log.Fatal(err)        }        var IDs []int        json.NewDecoder(resp.Body).Decode(&IDs)        IDs = IDs[:10]        var IDsString []string        for _, id := range IDs {            IDsString = append(IDsString, strconv.Itoa(id))        }        return IDsString    }        func (n *NewsScraper) GetTopStories() {        req, err := http.NewRequest("GET", n.url, nil)        if err != nil {            log.Fatal(err)        }
查看完整描述

1 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

我发现您的代码存在三个问题:


a) template.html 文件应该在 link & rel 之间有空格


<linkrel="stylesheet" href="https://unpkg.com/mvp.css"/>


<link rel="stylesheet" href="https://unpkg.com/mvp.css"/>

b) template.html 文件应该包含.Data而不是.Links.


c)go代码应该从下面替换


Data :[]TopStories{ 

  //what should I put here?

},


Data : scraper.Data,


查看完整回答
反对 回复 2022-12-05
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信