template not golang equal go go-templates

not - range template golang



Varios archivos usando template.ParseFiles en golang (2)

Hay un pequeño defecto en el método de user634175: el {{template "footer.html" .}} En la primera plantilla debe estar codificado, lo que dificulta el cambio de footer.html a otro pie de página.

Y aquí hay una pequeña mejora.

header.html:

Title is {{.Title}} {{template "footer" .}}

footer.html:

{{define "footer"}}Body is {{.Body}}{{end}}

Para que footer.html se pueda cambiar a cualquier archivo que defina "pie de página", para hacer diferentes páginas.

Por ejemplo.go, tengo

package main import "html/template" import "net/http" func handler(w http.ResponseWriter, r *http.Request) { t, _ := template.ParseFiles("header.html", "footer.html") t.Execute(w, map[string] string {"Title": "My title", "Body": "Hi this is my body"}) } func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) }

En header.html:

Title is {{.Title}}

En footer.html:

Body is {{.Body}}

Cuando voy a http://localhost:8080/ , solo veo "El título es Mi título", y no el segundo archivo, footer.html. ¿Cómo puedo cargar varios archivos con template.ParseFiles? ¿Cuál es la forma más eficiente de hacer esto?

Gracias por adelantado.


Sólo el primer archivo se utiliza como la plantilla principal. Los otros archivos de plantilla deben incluirse desde el principio así:

Title is {{.Title}} {{template "footer.html" .}}

El punto después de "footer.html" pasa los datos desde Execute hasta la plantilla de pie de página; el valor pasado se convierte . En la plantilla incluida.