如何将模板插入到另一个模板中?

我有一个非常基本的模板(basic _ template.html) ,想用另一个部分模板格式化的数据填充它。Basic _ template.html 可能包含几个使用部分模板格式化的内容。

我应该如何构造 views.py 中的代码?

我这样做的原因是稍后将使用 Ajax 填充。我这样做对吗?

74626 次浏览

You can do:

<div class="basic">
{% include "main/includes/subtemplate.html" %}
</div>

where subtemplate.html is another Django template. In this subtemplate.html you can put the HTML that would be obtained with Ajax.

You can also include the template multiple times:

<div class="basic">
{% for item in items %}
{% include "main/includes/subtemplate.html" %}
{% endfor %}
</div>

You can do this using a block. Blocks are a Django Template tag which will override sections of a template you extend. I've included an example below.

basic_template.html

<body>
{% block 'body' %}
{% endblock %}
</body>

template you want to include: (i.e. example.html)

{% extends 'basic_template.html' %}
{% block 'body' %}
/* HTML goes here */
{% endblock %}

views.py:

return render_to_response(template='example.html', context, context_instance)

Doing this will load basic_template.html, but replace everything inside of {% block 'body' %} {% endblock %} in basic_template.html with whatever is contained within {% block 'body' %} {% endblock %}.

You can read more about blocks and template inheritance in the Django Docs

I just wanted to add differences of extend and include. Both template and include can use models inserted in current app. Template is for global usage by your any app. Include is for use in certain apps. For ex: you want to insert Image Slider to your homepage and about page but nowhere else. You can create Slider app with its own model for convenience and import its model and include in that pages. If you used template for this example, you would create 2 templates one with slider and everything else other template have.

There are mainly 2 ways (2 easy ones)

1:

In base html put {% include "myapp/sub.html" %}

And just write html code inside your sub.html file

2:

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