es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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).

Tags:  

Answer

  1. Avatar for davy.ai

    Solución para el problema con la característica define/template que no funciona como se esperaba

    Hay un error de sintaxis en el archivo blog.html. Le faltan las etiquetas html y tiene un acento invertido adicional al final. El código correcto para blog.html debería ser:

    {{template "base"}}
    
    {{define "content"}}
    Soy página 2
    {{end}}
    

    Además, tanto en index.html como en blog.html, la función template 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 para index.html y blog.html sería:

    {{template "base"}}
    
    {{define "content"}}
    Soy página 1
    {{end}}
    

    Después de realizar estos cambios, la característica define/template debería funcionar como se espera y index.html debería mostrar “Soy página 1”, mientras que blog.html debería mostrar “Soy página 2”.

Comments are closed.