-1

Ich bin mir nicht sicher, ob dies ein Problem mit Express ist oder ob ich etwas falsch mit Nunjacks mache. Ich möchte eine Vorlagenhierarchie erstellen, in der die Vorlage alle Gemeinsamkeiten enthält und bestimmte Seiten die Vorlage erweitern. Aus irgendeinem Grund ist das Körperfeld blockiert. Wenn ich die extend-Anweisung so ändere, dass sie in template.nunj enthalten ist, funktioniert alles einwandfrei, aber ich kann den Header nicht erweitern. Ich habe auch versucht, den Headerblock in template.nunj und index.nunj explizit zu deklarieren und super() zu nennen, aber aus irgendeinem Grund wird entweder der Header oder der Body leer.Express nicht richtig Rendern Nunjucks

Expreßinstallation:

nunjucks.configure(path.resolve(__dirname, '.', 'views'), { 
    autoescape: true, 
    express: app, 
    watch: true, 
    cache: false, 
}); 

app.set('view engine', 'nunj'); 

layout.nunj:

<!DOCTYPE html> 
<html lang="en"> 

{% extends './common/header.nunj' %} 

<body> 
    <div class="container"> 
     {% block mainContainer %} 
      <p>This should be working</p> 
     {% endblock %} 
    </div> 
</body> 

</html> 

index.nunj

{% extends 'layout.nunj' %} 

{% block mainContainer %} 
    {{ super() }} 
    <p>This should be rendering</p> 
{% endblock %} 

header.nunj

{% block header %} 
    <head> 
     <meta charset="UTF-8"> 
     <link rel="stylesheet" href="/css/style.css"> 
     <title>Dari Dictionary</title> 

    <!--[if lt IE 9]> 
     <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> 
     <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> 
    <![endif]--> 

    </head> 
{% endblock %} 
+0

Warum in das Layout ohne Header statt verlängern? – mrdotb

+0

Weil das Einfügen es mir nicht erlaubt, es in Kindvorlagen anzupassen. –

+0

Können Sie die header.nunj in Ihrer Frage hinzufügen. – mrdotb

Antwort

-1

Nach http://jinja.pocoo.org/docs/dev/templates/#template-inheritance. Sie können keinen neuen Block in Child Template oder HTML einfügen. Sie müssen die in der Basisvorlage definierten Blöcke verwenden, in diesem Fall das Layout.

Layout.nunj

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     {% block header %} 
     {% endblock %} 
    </head> 
<body> 
    <div class="container"> 
     {% block mainContainer %} 
      <p>This should be working</p> 
     {% endblock %} 
    </div> 
</body> 
</html> 

header.nunj

{% extends 'layout.nunj' %} 
{% block header %} 
    <meta charset="UTF-8"> 
    <link rel="stylesheet" href="/css/style.css"> 
    <title>Dari Dictionary</title> 

    <!--[if lt IE 9]> 
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> 
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> 
    <![endif]--> 
{% endblock %} 

index.nunj

{% extends 'header.nunj' %} 

{% block mainContainer %} 
    {{ super() }} 
    <p>This should be rendering</p> 
{% endblock %} 
+0

Dies ist eine falsche Vorlagenhierarchie. Es macht keinen Sinn, das Layout in der Kopfzeile zu erweitern. Außerdem ist Ihre Aussage über das Hinzufügen eines neuen Blocks falsch. Sie können nicht mehrere Blöcke mit demselben Namen hinzufügen, aber Sie können problemlos neue Blöcke in dem untergeordneten Element hinzufügen, das nicht im übergeordneten Element enthalten ist. –

+0

Zeigen Sie mir ein funktionierendes Beispiel, wenn Sie einen neuen Block in der untergeordneten Vorlage hinzufügen. – mrdotb

+0

Ich warte immer noch. – mrdotb