Heim > Backend-Entwicklung > Golang > So schreiben Sie schrittweise eine HTML-Vorlage in Go

So schreiben Sie schrittweise eine HTML-Vorlage in Go

WBOY
Freigeben: 2024-02-06 09:50:08
nach vorne
710 Leute haben es durchsucht

So schreiben Sie schrittweise eine HTML-Vorlage in Go

Frageninhalt

Ich baue einen webbasierten Datenbrowser namens Mavgo Flight. Ich möchte, dass große Tabellen in SQLite kontinuierlich gedruckt werden, anstatt standardmäßig nur zu drucken, wenn alle Daten verfügbar sind. Ich habe versucht, die Vorlage pro Datenzeile auszuführen, aber es ist fehlgeschlagen.

func renderHTMLTable(w http.ResponseWriter, result *sqlx.Rows) {
    cols, err := result.Columns()
    if err != nil {
        log.Println(err, "renderHTMLTable")
        return
    }
    tmpl, err := template.ParseFiles("./templates/2d.html")
    if err != nil {
        log.Println("template failed", err)
        return
    }
    data := HTMLTable{}
    data.Cols = cols
    for result.Next() {
        cols, err := result.SliceScan()
        if err != nil {
            log.Println(w, err)
            break
        }
        s := make([]string, len(cols))
        for i, v := range cols {
            s[i] = fmt.Sprint(v)
        }
        tmpl.Execute(w, s)
    }
}
Nach dem Login kopieren


Richtige Antwort


Ich habe es aufgegeben, schlau zu sein und habe genau das getan, was Cerise vorgeschlagen hat Funktion zum inkrementellen Schreiben von Zeilen:

func renderHTMLTable(w http.ResponseWriter, result *sqlx.Rows) {
cols, err := result.Columns()
if err != nil {
    log.Println(err, "renderHTMLTable")
    return
}
head, err := template.ParseFiles("./templates/head.html")
if err != nil {
    log.Println("template failed", err)
    return
}
row, err := template.ParseFiles("./templates/row.html")
if err != nil {
    log.Println("template failed", err)
    return
}
foot := `  </tbody>
</table>
</div>

</body>
</html>`
head.Execute(w, cols)
s := make([]string, len(cols))
for result.Next() {
    values, err := result.SliceScan()
    if err != nil {
        log.Println(w, err)
        break
    }

    for i, v := range values {
        s[i] = fmt.Sprint(v)
    }
    row.Execute(w, s)
}
fmt.Fprint(w, foot)
Nach dem Login kopieren

}

Das obige ist der detaillierte Inhalt vonSo schreiben Sie schrittweise eine HTML-Vorlage in Go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage