为什么看起来模板继承仅适用于嵌套块?

问题描述 投票:0回答:1

您好,我有以下3个模板(出于本文的目的而简化):

1-base.html:

//link stylesheet

{% block page_content %}
{% endblock %}

//add bootstrap, jQuery and run scripts

2-base_app.html:

{% extends "base.html" %}

{% block page_content %}
//html here
{% endblock page_content %}

{% block page_app %}
{% endblock page_app %}

3-base_app_main.html:

{% extends "base_app.html"%}

{% block page_app %}

//html i wanna display when I call render(request, 'base_app_main.html', context)

{% endblock page_app %}

目前,当我显示3 - base_app_main.html时,它不会显示{% block page_app %}块内的零件,但是如果我按如下所示更改2 - base_app.html,则它可以工作:

2-MODIFIED base_app.html:

{% extends "base.html" %}

{% block page_content %}
//html here
{% block page_app %}
{% endblock page_app %}
{% endblock page_content %}

而且我不明白为什么模板继承在第一种情况下不起作用而在第二种情况下起作用?

我可以找到的文档或在线教程没有提供相关的多重继承示例。

django python-3.x django-templates
1个回答
0
投票

父模板仅从匹配的{% block %}{% endblock %}中的子元素中获取内容。您的base.html仅具有page_content块,因此不包括子级中的其他块。您可以修改base.html使其看起来像这样:

//link stylesheet

{% block page_content %}
{% endblock %}

{% block page_app %}
{% endblock page_app %}
//add bootstrap, jQuery and run scripts
© www.soinside.com 2019 - 2024. All rights reserved.