我有一個非常基本的模板(basic_template.html),並希望用另一個部分模板格式化數據來填充。 basic_template.html可能包含使用部分模板格式化的幾件事情。如何將模板插入另一個模板?
我應該如何在views.py中構造代碼?
我這樣做的原因是後來會用Ajax填充。我做對了嗎?
我有一個非常基本的模板(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模板標籤,它將覆蓋您在擴展的模板部分。我已經在下面加入了一個例子。
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,但將basic_template.html中的{% block 'body' %} {% endblock %}
中的所有內容替換爲{% block 'body' %} {% endblock %}
中包含的所有內容。
你可以閱讀更多有關Django Docs
這樣做有什麼區別方式和做{%include「main/includes/example.html」%}? –
@MichaelLafayette,包括作爲導入的時候,把延伸看作繼承。 – Mox
使用其中一種方法是否有任何性能優勢? '{%include'main/includes/example.html「%}'方法看起來更簡單(肯定* KISS *)。 –
對不起塊和模板繼承,忘了提:在子模板會被實例化多次到basic_template.html – WindowsMaker
這也是可能的,您可以在一個模板for循環模板中,請參閱已更新的答案。 –
輝煌!謝謝! – WindowsMaker