zoukankan      html  css  js  c++  java
  • 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在哪里

  • 相关阅读:
    hrbust 1558 小背包(简单01背包)水坑
    hrbust 1174泉水(DFS深度优先搜索)
    HDU 1115
    HDU 4273
    HDU 2912
    POJ 3528
    HDU 1912
    HDU 4741
    HDU 4617
    POJ 1755
  • 原文地址:https://www.cnblogs.com/nelsen-chen/p/9451936.html
Copyright © 2011-2022 走看看