2010-12-07 4 views
2

と延び/含む:Djangoテンプレートは、次のディレクトリを考慮したサブディレクトリ

|- basic.html 
|- nav.html 
|- folder1/ 
|- |- page.html 
\- \- nav.html 

page.htmlその場合、nav.html

を含む../basic.htmlを拡張し、その含まれますfolder1/nav.htmlfolder1/nav.htmlを削除した場合、はありません。が含まれます。これをどうやって解決するのですか?私はインラインでnav.htmlbasic.htmlにインラインインすることができましたが、道路に私が持っていたい状況があるかもしれませんbasic.htmlいくつか含まれています。

edit:考えられるのは、basic.htmlを継承したものがトップレベルのnav.htmlテンプレートを取得すると考えられますが、include nav.htmlディレクティブがどのテンプレートの現在のディレクトリでも評価されるためです。

+0

をすることができますfolder1/nav.htmlを削除する理由についてのコメント?それが含まれているファイルを削除する場合は、単にbasic.htmlを修正するように思えます。もちろん、私はあなた自身の状況があると理解していますが、私はそれにアプローチする方法が異なるかもしれないと言っているその人になるつもりです。 – munchybunch

+0

nav.htmlの内容を直接basic.htmlに入れる唯一の方法はあるようですが、私はむしろそれを別々にしておきたいと思います。純粋に審美的な理由です。 – decitrig

答えて

0

私はすべてがうまくいくかどうか分かりませんが、includeblockで囲む必要がありますか?

basic.html:

... 
{% block navigation %} 
{% include "nav.html" %} 
{% endblock %} 

page.html:

{% extends "../basic.html" %} 
{% block navigation %} 
{% include "folder1/nav.html" %} 
{% endblock %} 

あなたは元には、page.htmlのナビゲーションブロックを使用する必要があります上書きしない場合は...

+0

これはうまくいくようですが、別のデータを表示する必要がない限り、page.htmlに 'ブロックナビゲーション 'をオーバーライドさせたくないということです。 – decitrig

+0

ブロックを無効にすることについて悪い点は何ですか? –

+0

これはうまくいかないようです。問題は、 'include'ディレクティブが、ブロックが定義された場所ではなく、page.htmlのカレントディレクトリ内で評価されることです。 – decitrig

関連する問題