extends

extends指继承父模板的框架,将里面的部分内容换成子模版需要的东西即可。
语法:{% extends ‘public/base.html’ %}
extends后面可加相对路径,也可使用变量
如:
page1.html:

{% extends 'public/base.html' %}
{% block title %}page1{% endblock %}
{% block content %}
    <div id="test">
        <a>这里是page1的content</a>
        <input type="button" value="点我弹窗" @click="click1"/>
        <input v-model="message"/>
        <p>{[message]}</p>
    </div>

{% endblock %}
{% block script %}
    <script src="/static/public/vue.js"></script>
    <script src="/static/main/page1.js"></script>
{% endblock %}

base.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}base{% endblock %}
    </title>
</head>
<body>
{% block header %}
    <div id="app1">
        <a>模板头部内容</a>
        <input type="button" value="点我弹窗" @click="click1"/>
    </div>
{% endblock %}

{% block content %}
{% endblock %}

{% block body %}
    <a>模板主体内容</a>
{% endblock %}

{% block footer %}
    <a>模板底部内容</a>
{% endblock %}
{% block script %}
{% endblock %}
{% block style %}
{% endblock %}
<a>这里的数据是固定不会被改变的</a>
</body>
</html>

浏览器中的page1.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>page1
    </title>
</head>
<body>
    <div id="app1">
        <a>模板头部内容</a>
        <input type="button" value="点我弹窗" @click="click1"/>
    </div>
    <div id="test">
        <a>这里是page1的content</a>
        <input type="button" value="点我弹窗" @click="click1"/>
        <input v-model="message"/>
        <p>{[message]}</p>
    </div>
    <a>模板主体内容</a>
    <a>模板底部内容</a>
    <a>这里的数据是固定不会被改变的</a>
    <script src="/static/public/vue.js"></script>
    <script src="/static/main/page1.js"></script>
</body>
</html>

注意extends一定要写在最上方。

父模板base.html中定义的block块有几个子模版中就有几个,父模板中block名字自取,子模版可以重写父模板中的block,名字相同即可,但是子模版不能在block块之外写代码,父模板block之外的代码子模版只能得到不能修改。
子模版也可以在父模板的block中添加内容,如下:

{% block footer %}
    {{ block.super }}
    这里是子模版添加的内容
{% endblock %}

使用{{block.super}}告诉浏览器这一块是增加的内容,不是替换。

include

在Django的模板系统中,可以使用include这一语法:{% include ‘public/base2.html’ %}
include是指将后面引入的html文件中的所有代码都放到被引入文件的对应位置
include后面可加相对路径,也可使用变量如:

page2.html:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">

    <title>page2</title>
</head>
<body>
{% include 'public/base2.html' %}
</body>
</html>
**public/base2.html:**

<div id="app1">
    <a>模板内容</a>
    <input type="button" value="点我弹窗" @click="click1"/>
    <a>message</a>
</div>

导入后浏览器中的page2.html:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">

    <title>page2</title>
</head>
<body>
<div id="app1">
    <a>模板内容</a>
    <input type="button" value="点我弹窗" @click="click1"/>
    <a>message</a>
</div>
</body>
</html>

可以看到base2.html被导入到了page2.html文件中,相当于代码复用。

总结

extends主要用于同一主题的网页,网页之间的框架大体相同,include主要用于多个html中有相同的代码。
二者是可以一起使用的,这么看extends和include用处刚好是相反的。


yteaday
1 声望0 粉丝

引用和评论

0 条评论