2016-09-29 3 views
0

こんにちは私はdjangoの新人です。私はそれを使ってサイトを作ろうとしています。私のプロジェクトの構造は、現在そうのようなものです:現在のURLに基​​づいて静的なnavbarテンプレート内で動的にテンプレートを読み込む方法はありますか?

project/ 
    manage.py 
    project/ 
     __init__.py 
     settings.py 
     urls.py 
     myapps/ 
      __init__.py 
      main/ 
       __init__,models,views,urls,etc... 
       static/ 
        main/ 
       templates/ 
        main/ 

私はJavaScriptと画像が

myapps/main/static/main/ 

に位置しており、私のすべてのテンプレートが

myapps/main/templates/main/ 
に常駐し、すべてのCSSでhtml5boilerplateを使用しています

固有の名前を付けてください。ユーザーは、彼らがhtml5bp付属(boilerplate.htmlに改名)少し変更したindex.htmlをロードメインページヒットすると:

<!-- boilerplate.html --> 
{% load static %} 
... 
<body> 
    <!--[if lt IE 8]> 
     ... 
    <![endif]--> 

    <!-- Add your site or application content here --> 
    {% include "main/index.html" %} 

    <script src="https://code.jquery.com/jquery-1.12.0.min.js"></script> 
    <script src="{% static 'main/js/plugins.js' %}"></script> 
    <script src="{% static 'main/js/main.js' %}"></script> 

    <!-- Google Analytics: change UA-XXXXX-X to be your site's ID. --> 
    <script> 
     ... 
    </script> 
</body> 
... 

を私は私の静的なサイドバーとしてのindex.htmlを使用していますが、私はそれを持っています別のテンプレートで、私はそれを改行したいと思っています。そして、退屈なものを楽しいものから分離します(誰がbpコードを見たいですか?)。ユーザーが新しいページにリダイレクトされるたびに

<!-- index.html --> 
<div id="sidenav" class="sidenav"> 
    ... 
</div> 

<div id="main"> 
    {% include /*SOMETHING HERE*/ %} 
</div> 

は今、私はちょうど先URLを解決し、インクルードは完全に別のテンプレートを含むようにタグを含める変更したいです。だから、私は、ビュー関数に要求されたURLを渡し、それからテンプレートを返す必要があるだろうと思ったが、私はこれを行う方法やそれがうまくいくかどうかはわかりません。申し訳ありませんが、これはどこかからの繰り返しの質問ですが、私は見て、関連する何かを見つけることができませんでした。

答えて

1

あなたはこれを間違った方法で考えています。テンプレートの継承を使用する必要があります。ビューはそのURLの特定のテンプレートをレンダリングする必要がありますが、各テンプレートはサイドバーとその他の構造を提供するindex.htmlを拡張する必要があります。

+0

私はちょうどこれを読みました。ただ、私はindex.htmlをboilerplate.htmlに拡張し、代わりにindex.htmlをboilerplate.htmlに含めるべきであることを明確にするために、{%block content%}を使うべきですか?次に私の他のページでは、私はindex.htmlを拡張して、/ * SOMEE​​THING HERE * /行を別の{%block content%}に置き換えますか? – GregoryNeal

関連する問題