django 模板的继承

django 模板的继承

django中模板继承操作:


模板继承

模板继承允许你建立一个基本的”骨架”模板, 它包含你所有最常用的站点元素 并 定义了一些可以被子模板覆盖的block.

这非常有用,例如各大门户网站左边一般有导航栏,在导航栏点击不同的区域时,只有中间<body>部分的内容更新了,而<body>标签之外的内容没有变。就像博客园一样

django 模板的继承


如何使用母模板和子模板?

{% block title %}母模板的标题{% endblock %}
{% block title %}子模板的标题{% endblock %}

{% block content %}{% endblock %}
{% block content %}
    <p>子模板中的内容</p>
{% endblock %}

模板一般是成对出现的,在母模板中定义好,在子模板中直接套用,只不过需要把

{% block title %}母模板的标题{% endblock %}

{% block content %}{% endblock %}

中间的内容换成子模板自己的内容即可。

下面看看具体怎么做:

母模板:

base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}母模板{% endblock %}</title>
</head>
<body>
    <h2>My helpful timestamp site</h2>
    <h2>这行文字是继承母模板的!!!</h2>
    {% block content %}{% endblock %}
    <hr>
    <p>Thanks for visiting my site. </p>
    <p>这行文字也是继承母模板的!!!</p>
</body>
</html>

子模板

{% extends "base.html" %}
{% block title %}子模板{% endblock %}
{% block content %}
<table border="1">
    <thead>
    <tr>
        <th>姓名</th>
        <th>邮箱</th>
        <th>所属组</th>
    </tr>
    </thead>
    <tbody>
    {% for user in data %}
    <tr>
        <td>{{ user.Name }}</td>
        <td>{{ user.Email }}</td>
        <td>{{ user.group_list }}</td>
    </tr>
    {% endfor %}
    </tbody>
</table>
{% endblock %}

django 模板的继承