84

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

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

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

4

4 回答 4

159

你可以做:

<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>
于 2012-06-11T19:02:27.230 回答
24

您可以使用块来执行此操作。块是一个 Django 模板标签,它将覆盖您扩展的模板部分。我在下面提供了一个示例。

basic_template.html

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

您要包含的模板:(即 example.html)

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

视图.py

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

这样做将加载basic_template.html,但将 basic_template.html 中的所有内容替换为{% block 'body' %} {% endblock %}.html 中包含的所有内容{% block 'body' %} {% endblock %}

您可以在Django Docs中阅读有关块和模板继承的更多信息

于 2012-06-11T19:23:45.613 回答
1

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

1:

在基本 html 中放置 {% include "myapp/sub.html" %}

只需在 sub.html 文件中编写 html 代码

2:

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

于 2019-04-29T12:54:43.357 回答
0

我只是想添加扩展和包含的差异。模板和包含都可以使用当前应用程序中插入的模型。模板供您的任何应用程序在全球范围内使用。包括用于某些应用程序。例如:您想将图像滑块插入您的主页和关于页面,但没有其他地方。为方便起见,您可以使用自己的模型创建 Slider 应用程序,并导入其模型并包含在该页面中。如果您在此示例中使用模板,您将创建 2 个模板,其中一个带有滑块,其他模板具有其他所有模板。

于 2018-08-08T09:53:00.177 回答