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

时间:2012-06-11 18:58:44

标签: html django django-templates

我有一个非常基本的模板(basic_template.html),并希望使用其他部分模板填充格式化的数据。 basic_template.html可能包含使用部分模板格式化的一些内容。

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

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

4 个答案:

答案 0 :(得分:115)

你可以这样做:

<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>

答案 1 :(得分:19)

您可以使用块执行此操作。块是Django模板标记,它会覆盖您扩展的模板的各个部分。我在下面添加了一个示例。< / p>

<强> 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

中阅读有关块和模板继承的更多信息

答案 2 :(得分:0)

我只是想添加扩展和包含的区别。 模板和包含都可以使用当前应用程序中插入的模型。 模板可供您的任何应用程序全局使用。 Include用于某些应用程序。 例如:您想将Image Slider插入首页和关于页面,但无其他地方。为了方便起见,您可以使用自己的模型创建Slider应用,并导入其模型并将其包含在页面中。 如果在此示例中使用模板,则将创建2个模板,其中一个带有滑块,其他所有模板都具有。

答案 3 :(得分:0)

主要有2种方法(2种简单方法)

1:

以基本html格式放置 {%包括“ myapp / sub.html”%}

然后在您的sub.html文件中编写html代码

2:

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