Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何将模板插入到另一个模板中?_Html_Django_Django Templates - Fatal编程技术网

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

Html 如何将模板插入到另一个模板中?,html,django,django-templates,Html,Django,Django Templates,我有一个非常基本的模板(basic_template.html),我想用另一个部分模板格式化的数据来填充。basic_template.html可能包含几个使用部分模板格式化的内容 我应该如何在views.py中构造代码 我这样做的原因是,稍后将使用Ajax填充。我这样做对吗?您可以: <div class="basic"> {% include "main/includes/subtemplate.html" %} </div> 您可以使用块执行此操作。块是D

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

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

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

您可以:

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

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

basic_template.html

<body>
{% block 'body' %}
{% endblock %}
</body>
视图.py

return render_to_response(template='example.html', context, context_instance)
这样做将加载basic_-template.html,但将basic_-template.html中
{%block'正文'%}{%endblock%}
{%block'正文'%}{%endblock%}中包含的所有内容替换为
{%endblock%}


您可以在

中阅读有关块和模板继承的更多信息,我只是想添加扩展和包含的差异。 模板和包含都可以使用当前应用中插入的模型。 模板供您的任何应用程序全局使用。“包含”用于某些应用程序。 例如:你想在你的主页和“关于”页面上插入图像滑块,但别无选择。为方便起见,您可以使用自己的模型创建Slider应用程序,并导入其模型并包含在该页面中。 如果您在本例中使用模板,您将创建两个模板,一个是带滑块的模板,另一个是其他模板的所有模板。

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

1:

在基本html中输入 {%include“myapp/sub.html”%}

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

2:


抱歉,忘了提一下:子模板可能会被实例化多次到基本模板中。HTMLH这也是可能的,您可以在模板的for循环中包含模板,请参阅更新的答案。在item循环中,我是否应该在子模板上下文中传递item,如
{%include“includes/subtemplate.html”使用item=item%}
?@barraponto可以执行此操作,但子模板中已提供了
item
。如果您希望保持子模板的上下文干净,那么可以使用
{%include“includes/subtemplate.html”和item=item only%}
item
从父模板传递到子模板。这应该添加到Django文档的某个地方!感谢您提供了有用的答案。这样做与{%include“main/includes/example.html”%}有什么区别?@MichaelLafayette,将extend视为继承,将include视为导入。使用一种方法比另一种方法有什么性能优势?
{%include“main/includes/example.html”%}
方法看起来更简单(很简单)。
{% extends 'basic_template.html' %} 
{% block 'body' %}
/* HTML goes here */
{% endblock %}
return render_to_response(template='example.html', context, context_instance)