Django模板中如何使用模板继承和块覆盖?

2023-04-09 00:00:00 模板 继承 如何使用

Django模板继承和块覆盖是提高开发效率和代码重用的重要手段。模板继承允许你创建基础模板,然后在子模板中继承该模板并添加自己的内容。块覆盖允许你在子模板中重写基础模板中定义的特定块。

下面是一个简单的示例,展示如何使用模板继承和块覆盖来实现一个基础模板和两个子模板:

<!-- base.html -->
<html>
<head>
    <title>{% block title %}Default Title{% endblock %}</title>
</head>
<body>
    <div id="navbar">
        {% block navbar %}
        <a href="#home">Home</a>
        <a href="#about">About</a>
        <a href="#contact">Contact</a>
        {% endblock %}
    </div>

    <div id="content">
        {% block content %}{% endblock %}
    </div>
</body>
</html>
<!-- child1.html -->
{% extends "base.html" %}

{% block title %}Homepage - {{ block.super }}{% endblock %}

{% block navbar %}
{{ block.super }}
<a href="#login">Login</a>
{% endblock %}

{% block content %}
<h1>Welcome to pidancode.com!</h1>
{% endblock %}
<!-- child2.html -->
{% extends "base.html" %}

{% block title %}About Us - {{ block.super }}{% endblock %}

{% block content %}
<h1>About Us</h1>
<p>皮蛋编程 is a coding resource for beginners and professionals alike.</p>
{% endblock %}

在上面的示例中,我们首先定义了一个基础模板 base.html,它包含了一些共用的结构和布局。在 base.html 中包含三个块:titlenavbarcontent

接下来,我们定义了两个子模板 child1.htmlchild2.html。它们都继承了基础模板 base.html,并在子模板中定义了自己的块。

child1.html 中重定义了基础模板中的 titlenavbarcontent 块,添加了一个额外的链接 Login

child2.html 只重定义了基础模板中的 titlecontent 块,添加了一个关于我们的标题和描述。

通过这种方式,我们可以轻松地创建多个子模板,每个子模板都可以重用基础模板的结构和布局,并且可以添加自己的内容和样式。

相关文章