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

Win*_*ker 63 html django django-templates

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

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

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

Sim*_*ser 124

你可以做:

<div class="basic">
{% include "main/includes/subtemplate.html" %}    
</div>
Run Code Online (Sandbox Code Playgroud)

哪里subtemplate.html是另一个Django模板.在这里subtemplate.html你可以把使用Ajax获得的HTML.

您还可以多次包含模板:

<div class="basic">
{% for item in items %}
    {% include "main/includes/subtemplate.html" %}    
{% endfor %}
</div>
Run Code Online (Sandbox Code Playgroud)

  • @barraponto你可以这样做,但`item`已在子模板中可用.如果你希望保持子模板的上下文干净,那么你可以使用`{%include'includes/subtemplate.html"with item = item only%}`来只将`item`从父模板传递给子模板. (5认同)

Wip*_*ozn 20

您可以使用来完成此操作.块是一个Django模板标记,它将覆盖您扩展的模板的各个部分.我在下面列举了一个例子.

basic_template.html

<body>
{% block 'body' %}
{% endblock %}
</body>
Run Code Online (Sandbox Code Playgroud)

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

{% extends 'basic_template.html' %} 
{% block 'body' %}
/* HTML goes here */
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

views.py:

return render_to_response(template='example.html', context, context_instance)
Run Code Online (Sandbox Code Playgroud)

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

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

  • @MichaelLafayette,认为扩展为继承,同时包含为import. (3认同)