web-dev-qa-db-ja.com

テンプレートを別のテンプレートに挿入するにはどうすればよいですか?

非常に基本的なテンプレート(basic_template.html)があり、別の部分的なテンプレートを使用してフォーマットされたデータを入力する必要があります。 basic_template.htmlには、部分テンプレートを使用してフォーマットされたいくつかのものが含まれている場合があります。

Views.pyでコードをどのように構成する必要がありますか?

これを行う理由は、後でAjaxを使用して入力するためです。私はこれを正しくやっていますか?

62
WindowsMaker

できるよ:

<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>
120
Simeon Visser

これを行うには、ブロックを使用します。ブロックは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 でブロックとテンプレートの継承の詳細を読むことができます。

20
Wipqozn

主に2つの方法があります(2つの簡単な方法)

1:

ベースHTMLに{%include "myapp/sub.html"%}を入れます

そして、sub.htmlファイル内にhtmlコードを書くだけです

2:

https://docs.djangoproject.com/en/dev/ref/templates/language/#template-inheritance

0
Akshat Tamrakar

Extendとincludeの違いを追加したかっただけです。テンプレートとインクルードの両方で、現在のアプリに挿入されたモデルを使用できます。テンプレートは、任意のアプリでグローバルに使用するためのものです。インクルードは、特定のアプリで使用するためのものです。例:あなたはホームページとアバウトページに画像スライダーを挿入したいが、それ以外の場所は挿入したくない。便宜上、独自のモデルでSliderアプリを作成し、そのモデルをインポートしてそのページに含めることができます。この例でテンプレートを使用した場合は、スライダー付きのテンプレートと他のテンプレートにあるすべてのテンプレートを2つ作成します。

0
oljik