• Django 第六课 【模板继承】


    在前端页面开发中,有些代码是需要重复使用的。这种情况可以使用 ’include‘ 标签来实现。也可以使用另外一个比较强大的方式来实现,那就是模板继承。模板继承类似于 ’python‘ 中的类,在父类中可以先定义好一些变量和方法,然后在子类中实现,模板继承也可以在父模板中先定义好一些子模板需要用到的代码。然后子模板直接继承就可以了,并且因为子模板肯定有自己不同的代码,因此可以在父模板中定义一个block接口,然后在子模板再去实现,以下是父模板的代码:

    {% load static %}
    <! DOCTYPE html>
    <html lang="en">
    <head>
    <link rel="stylesheet" href= "{% static 'style.css' %}"/>
    <title>{% block title %}我的站点{% endblock %}</title>
    </head>
    
    <body>
    <div id="sidebar">
    {% block sidebar %}
    <ul>
    {% endblock %}
    </div>
    <div id="content">
    {% block content %} {% endblock %}
    </div>
    </body>

    这个模板,我们取名叫做 ’base.html‘ ,定义好一个简单的 ’html‘ 骨架,然后定义好俩个 ’block‘接口,让子模板来根据具体需求来实现。子模板然后通过 ’extends‘ 标签来实现,示例代码如下:

    {% extends "base.html" %}
    
    {% block title %} 博客列表 {% endblock %}
    
    
    {% block content %}
    
    {% for entry in blog_entries %}
    <h2> {{ entry.title }} </h2>
    <p> {{ entry.body}} </p>
    {% endfor %}
    {% endblock %}


    需要注意的是:extends 标签必须放在模板的第一行。

    子模板中的代码必须放在block中,否则将不会被渲染

    如果在某个 ’block‘ 中需要使用父模板的内容,那么可以使用 ’{{block.super}}‘来继承,比如上列子, ’{% block titkle %}‘,如果想使用父模板的 ’title‘,那么可以在子模板的 ’title block‘ 中使用 ’{{ block.super }}‘

    在定义 ’block‘ 的时候,除了在 ’block‘ 开始的地方定义这个 ’block‘ 的名字, 还可以在 ’block‘ 结束的时候定义名字, 比如 ’{% block title %} {% endblock title %}‘ 。这在大型模板中显得尤其有用,能让你快速的看到block在哪里

  • 相关阅读:
    自适应网页设计(Responsive Web Design)(转)
    PAT 1062 最简分数(20)(代码+思路)
    PAT 1059 C语言竞赛(20)(代码+思路)
    PAT 1058 选择题(20)(代码+思路)
    PAT 1057 数零壹 (20)(代码+思路)
    PAT 1054 求平均值 (20)(代码+思路+测试用例)
    PAT 1053 住房空置率 (20)(代码+思路)
    PAT 1052 卖个萌 (20)(代码+思路)
    PAT 1048 数字加密(20)(代码+思路)
    PAT 1047 编程团体赛(代码)
  • 原文地址:https://www.cnblogs.com/nelsen-chen/p/9451936.html
Copyright © 2020-2023  润新知