1.模板继承


 

在HTML里,我们经常会重复使用一个HTML页面的框架,然后在复制里面的代码,在粘贴到其他的页面里,这样既费力又费时,所以可以通过下面的方法,来改善这个问题,那么这个方法是什么呢?就是模板继承啦

模板继承是3.1.2版本添加的一项更加灵活的模板布局方式,模板继承不同于模板布局,甚至来说,应该在模板布局的上层。模板继承其实并不难理解,就好比类的继承一样,模板也可以定义一个基础模板(或者是布局),并且其中定义相关的区块(block),然后继承(extend)该基础模板的子模板中就可以对基础模板中定义的区块进行重载。
因此,模板继承的优势其实是设计基础模板中的区块(block)和子模板中替换这些区块。
每个区块由<block></block>标签组成,并且不支持block标签的嵌套。

那我们来简单的举例一下吧!

模板的父类

father.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %} {% endblock %}</title>       #子类将会在{% block title %} {% endblock %}这里面填写子类网页的标题内容
    <link rel="stylesheet" href="/static/commons.css" />
    <style>
        .pg-header{
            height: 50px;
            background-color: seashell;
            color: green;
        }
    </style>
    {% block css %} {% endblock %}                        #子类将会在 {% block css %} {% endblock %}这里面填写子类网页的样式
</head>
<body>
    <div class="pg-header">模板之继承</div>
    
</body>
</html>

模板的子类

 son1.html

{% extends 'father.html' %}    #告知继承的是master.html

{% block title %}模板之继承{% endblock %}   #替换父类模板的{% block title %}{% endblock %}添加标题内容

{% block css %}   #替换父类模板的{% block css %}{% endblock %}添加样式
    <style>
        body{
            background-color: red;
        }
    </style>
{% endblock %}

到此为止,这就是模板的继承

2.模板导入


承接上文,既然模板继承已经知道,那么模板导入也变得很轻松

模板导入,什么是模板导入呢?我先举个例子吧,假如你在做一个项目,但是这个项目的所有.html文件中都要有一个div的模态框,然而,为了实现这个功能你不得不在每个html文件中重复写他,既耗力又费时,所以可以通过模板导入来完成这项工作,利用模板导入,可以用简短的语句条令,来完成很多重复复杂的任务!这就是它的便捷之处!

首先先创建一个模板,为了通俗易懂,没做那么多的修饰

tag.html

<div style="border: 1px solid red;width: 400px;height: 200px">
    <input type="text" />
</div>

son1.html

{% extends 'father.html' %}

{% block titel %}
子类
{% endblock %}

{% block css %}
<style>
    body{
        margin: 0;
    }
    .pg_title{
        height: 48px;
        background-color: aqua;
        color: red;
    }
</style>
{% endblock %}

{% block content %}
    <div>
        <ul>
            {% for u in user_list %}
                <li>{{ u }}</li>
            {% endfor %}
        </ul>
    </div>
    {% include 'tag.html' %}   #导入之前创建的模板,可以在这个页面中显示tag.html的所创建的样式
{% endblock %}

 3.模板的执行


 

模版的创建过程,对于模版,其实就是读取模版(其中嵌套着模版标签),然后将 Model 中获取的数据插入到模版中,最后将信息返回给用户。

def current_datetime(request):
    now = datetime.datetime.now()
    html = "<html><body>It is now %s.</body></html>" % now
    return HttpResponse(html)
View Code

相关文章:

  • 2021-11-16
  • 2022-12-23
  • 2021-08-10
  • 2021-09-25
  • 2021-12-23
  • 2021-05-07
  • 2021-10-22
  • 2021-06-08
猜你喜欢
  • 2021-08-04
  • 2021-04-09
  • 2021-09-16
  • 2021-07-17
  • 2021-07-10
  • 2021-10-01
相关资源
相似解决方案