【问题标题】:Golang print html lines dynamicallyGolang 动态打印 html 行
【发布时间】:2018-03-21 04:13:32
【问题描述】:

我想将 mysql 数据库中的行打印为 html。 这就是我想要实现的目标:

<html>
<head>
...
</head>
<body>
<a href = "url1">name1</a>
<a href = "url2">name2</a>
...
</body>
</html>

我的代码:

for rows.Next() {
    var name string
    var url string

    err = rows.Scan(&name, &url)
    if err != nil {
        log.Fatal(err)
    }
}

我认为我可以将项目放入一个切片中,然后在模板中使用 for 循环将它们写出,但是否可以在 go 代码中使用 for 循环写出每一行?

【问题讨论】:

    标签: html mysql go


    【解决方案1】:

    这是可能的,但不是一个好主意。模板包对于转义可能触及用户输入的东西很有用,而且不难使用。只需制作一片事物,然后在模板中覆盖它们。

    这比尝试在代码中构建 html 更安全,因为 context 包知道转义 url 或 js,而不是 html,并考虑变量的位置。

    https://play.golang.org/p/JEIjPT5ayP

    package main
    
    import (
        "log"
        "os"
        "text/template"
    )
    
    var t = `
    <html>
    <head>
    ...
    </head>
    <body>
    {{range . }}
      <a href = "{{.URL}}">{{.Name}}</a>
    {{end}}
    </body>
    </html> 
    `
    
    type Location struct {
        Name string
        URL  string
    }
    
    func main() {
    
        // Insert read data code here
        data := []Location{{Name: "example", URL: "https://example.com"}}
    
        tmpl, err := template.New("foo").Parse(t)
        if err != nil {
            log.Fatal(err)
        }
    
        err = tmpl.Execute(os.Stdout, data)
        if err != nil {
            log.Fatal(err)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 2020-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多