非常に基本的なテンプレート(basic_template.html)があり、別の部分的なテンプレートを使用してフォーマットされたデータを入力する必要があります。 basic_template.htmlには、部分テンプレートを使用してフォーマットされたいくつかのものが含まれている場合があります。
Views.pyでコードをどのように構成する必要がありますか?
これを行う理由は、後でAjaxを使用して入力するためです。私はこれを正しくやっていますか?
できるよ:
<div class="basic">
{% include "main/includes/subtemplate.html" %}
</div>
ここで、subtemplate.html
は別のDjangoテンプレートです。このsubtemplate.html
Ajaxで取得されるHTMLを配置できます。
テンプレートを複数回含めることもできます。
<div class="basic">
{% for item in items %}
{% include "main/includes/subtemplate.html" %}
{% endfor %}
</div>
これを行うには、ブロックを使用します。ブロックはDjangoテンプレートタグで、テンプレートのセクションを上書きしますextend。以下に例を示しました。
basic_template.html
<body>
{% block 'body' %}
{% endblock %}
</body>
含めるテンプレート:(つまり、example.html)
{% extends 'basic_template.html' %}
{% block 'body' %}
/* HTML goes here */
{% endblock %}
views.py:
return render_to_response(template='example.html', context, context_instance)
これを行うと、basic_template.htmlがロードされますが、{% block 'body' %} {% endblock %}
は、basic_template.htmlの{% block 'body' %} {% endblock %}
。
Django Docs でブロックとテンプレートの継承の詳細を読むことができます。
主に2つの方法があります(2つの簡単な方法)
1:
ベースHTMLに{%include "myapp/sub.html"%}を入れます
そして、sub.htmlファイル内にhtmlコードを書くだけです
2:
https://docs.djangoproject.com/en/dev/ref/templates/language/#template-inheritance
Extendとincludeの違いを追加したかっただけです。テンプレートとインクルードの両方で、現在のアプリに挿入されたモデルを使用できます。テンプレートは、任意のアプリでグローバルに使用するためのものです。インクルードは、特定のアプリで使用するためのものです。例:あなたはホームページとアバウトページに画像スライダーを挿入したいが、それ以外の場所は挿入したくない。便宜上、独自のモデルでSliderアプリを作成し、そのモデルをインポートしてそのページに含めることができます。この例でテンプレートを使用した場合は、スライダー付きのテンプレートと他のテンプレートにあるすべてのテンプレートを2つ作成します。