Django覆盖继承模板中的部分

时间:2017-09-06 15:07:19

标签: django django-templates

我已设置以下模板

base.html文件

{% extends 'base/main_base.html' %}

{% block main-content %}
    <h1>Header stuff<h1>
    ...
    {% block article-content %}
    {% endblock %}

{% endblock %}

article.html

{% extends 'base.html' %}
{% block article-content %}
   <h2>Content</h2>
   <p>More content</p>
{% endblock %}

现在,我将一个视图连接到了article.html,我希望使用动态视图数据来覆盖“base.html”模板中的“标题内容”。问题是,视图连接到article.html,它继承自base。

有没有办法从子模板覆盖部分基本模板?

2 个答案:

答案 0 :(得分:1)

您可以在 base.html

中创建另一个template block
{% extends 'base/main_base.html' %}

{% block main-content %}
    <h1>{% block header %}Header stuff{% endblock %}<h1>
    ...
    {% block article-content %}
    {% endblock %}

{% endblock %}

并覆盖 article.html

中的阻止
{% extends 'base.html' %}

{% block header %}My overwritten headline{% endblock %}

{% block article-content %}
   <h2>Content</h2>
   <p>More content</p>
   ...
{% endblock %}

答案 1 :(得分:1)

您还可以在base.html中查看&#34;标题&#34;值从文章(或任何其他视图)注入模板:

<强> base.html文件

{% extends 'base/main_base.html' %}

{% block main-content %}
    <h1>
        {% if header %}
            {{ header }}
        {% else %}
            Header stuff
        {% endif %}
    <h1>
    ...
    {% block article-content %}
    {% endblock %}

{% endblock %}