2016-12-11 18 views
-1

nunjucksで何か問題が起きているかどうかわかりません。テンプレートにすべての共通部分が含まれ、特定のページがテンプレートを拡張するテンプレート階層を作成します。何らかの理由で、ボディフィールドはブロックです。 template.nunjの中にインクルードするようにextendディレクティブを変更すると、すべて正常に動作しますが、ヘッダを拡張することはできません。また、template.nunjとindex.nunjでヘッダブロックを明示的に宣言してsuper()を呼び出してみましたが、何らかの理由でヘッダや本文が空白になりました。エクスプレスでNunjucksが正しく表示されない

高速セットアップ:

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> 

{% extends 'layout.nunj' %} 

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

index.nunjheader.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

index.nunjなぜレイアウトのヘッダを含む代わりに延びていませんか? – mrdotb

+0

これを含めると、子テンプレートでそれをカスタマイズすることはできません。 –

+0

あなたの質問にheader.nunjを追加できますか? – mrdotb

答えて

-1

http://jinja.pocoo.org/docs/dev/templates/#template-inheritanceによります。子テンプレートまたはプレーンhtmlに新しいブロックを追加することはできません。この場合、基本テンプレート、レイアウトでブロック定義を使用する必要があります。

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 %} 

{% extends 'header.nunj' %} 

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

これは不正なテンプレート階層です。ヘッダー内でレイアウトを拡張するのは意味がありません。また、新しいブロックの追加に関する記述が間違っています。同じ名前のブロックを複数追加することはできませんが、親にないブロックに新しいブロックを簡単に追加できます。 –

+0

子テンプレートに新しいブロックを追加すると、動作する例が表示されます。 – mrdotb

+0

私はまだ待っています。 – mrdotb

関連する問題