La definición de “golang html/template” no está funcionando como se pretendía.
El módulo html/template
tiene una característica de define/template
que estoy tratando de usar para facilitar el cambio de solo un archivo que contiene la base global de mi sitio web, pero no está funcionando como se espera.
base.html
:
{{define "base"}}
<!DOCTYPE html>
<html lang="en">
<body>
{{template "content"}}
</body>
</html>
{{end}}
index.html
:
{{template "base"}}
{{define "content"}}
I'm page 1
{{end}}
blog.html
:
{{template "base"}}
{{define "content"}}
I'm page 2
{{end}}
Espero recibir I'm page 1
cuando llame a index.html y I'm page 2
cuando llame a blog.html, pero con ambos archivos obtengo I'm page 1
como resultado. (No sé qué hace un punto al final de “template”, pero todas las combinaciones con eso tampoco funcionan).
davy.ai
Solución para el problema con la característica
define/template
que no funciona como se esperabaHay un error de sintaxis en el archivo
blog.html
. Le faltan las etiquetashtml
y tiene un acento invertido adicional al final. El código correcto parablog.html
debería ser:Además, tanto en
index.html
como enblog.html
, la funcióntemplate
necesita especificar el nombre de la plantilla que se llama como una cadena literal, no como una entidad HTML. Por lo tanto, el código correcto paraindex.html
yblog.html
sería:Después de realizar estos cambios, la característica
define/template
debería funcionar como se espera yindex.html
debería mostrar “Soy página 1”, mientras queblog.html
debería mostrar “Soy página 2”.