Как я могу сделать template.Execute () для записи в файл, а не в response.Writer? - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть код ниже, чтобы проанализировать файл шаблона и записать проанализированный html в ResponseWriter: -

package main

import (
    "net/http"
    "html/template"
)

func handler(w http.ResponseWriter, r *http.Request) {
    t, _ := template.ParseFiles("view.html")
    t.Execute(w, "Hello World!")
}

func main() {
    server := http.Server{
        Addr: "127.0.0.1:8080",
    }
    http.HandleFunc("/view", handler)
    server.ListenAndServe()
}  

, а файл шаблона "template.html" выглядит так:

<html>
<head>
    <title>First Program</title>
</head>
<body>
    {{ . }}
</body>
</html>  

Теперь, вместо того, чтобы записывать проанализированный / исполняемый файл в ResponseWriter, я хотел бы записать это содержимое в html-файл, например, "parsed.html".Как я могу этого достичь.Я новичок в Go, так что мне сложно понять идею.Спасибо.

1 Ответ

0 голосов
/ 13 декабря 2018

Вот один из способов сделать это:

t, err := template.ParseFiles("view.html")
if err != nil {
    // handle error
}

// Create the file
f, err := os.Create("parsed.html")
if err != nil {
    // handle error
}

// Execute the template to the file.
err = t.Execute(f, "Hello World!")
if err != nil {
    // handle error
}

// Close the file when done.
f.Close()

Запустить его на игровой площадке

Ключевой момент: * os.File и http.ResponseWriter обаудовлетворить интерфейс io.Writer, использованный в первом аргументе для выполнения.

...