Django 模板的导入与继承

2023-11-18

目录

模板的导入和继承

1、模板的导入之include标签

2. 模板的继承\派生之extendds标签,block标签


模板的导入和继承


在实际开发中,模板文件彼此之间可能会有大量冗余代码,为此django提供了专门的语法来解决这个问题,主要围绕三种标签的使用:include标签、extends标签、block标签,详解如下

1、模板的导入之include标签


功能类似于inclusion_tag,但是没有inclusion_tag灵活好用

{% include '模版名称' %}

eg:可以把广告栏写到专门的文件里advertise.html

<div class="adv">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h3 class="panel-title">Panel title</h3>
        </div>
        <div class="panel-body">
            Panel content
        </div>
    </div>
    <div class="panel panel-danger">
        <div class="panel-heading">
            <h3 class="panel-title">Panel title</h3>
        </div>
        <div class="panel-body">
            Panel content
        </div>
    </div>
    <div class="panel panel-warning">
        <div class="panel-heading">
            <h3 class="panel-title">Panel title</h3>
        </div>
        <div class="panel-body">
            Panel content
        </div>
    </div>
</div>


然后在base.html文件中用include标签引入advertise.html文件的内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  {% include "advertise.html" %}
</body>
</html>

注意: include导入, 会将html文件内所有的内容全部导入, 所以对于被导入的文件,不是一个完整的html文件, 不然导入文件之后, 一个html文件可能出现两个<head>标签.

2. 模板的继承\派生之extendds标签,block标签

extends可以搭配一个block标签, 用于在继承的基础上定制新的内容

我们可以先创建一个基本的股价模板, 它包含我们站点中的全部元素, 并且可以定义多处blocks, 例如我们创建base.html 文件内容如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>
        {% block title %}自定义title名{% endblock %}
    </title>
</head>
<body>
  <div>
    {% block sidebar %}
    	<a href="#" class="list-group-item active">服装城</a>
    	<a href="#" class="list-group-item">美妆馆</a>
    	<a href="#" class="list-group-item">超市</a>
    	<a href="#" class="list-group-item">全球购</a>
    	<a href="#" class="list-group-item">闪购</a>
    	<a href="#" class="list-group-item">团购</a>
    {% endblock %}
  </div>

  <div >
    {% block content %}
    		base.html页面内容
    {% endblock %}
  </div>

</body>
</html>

模板base.html 定义了一个可以用于两列排版页面的简单HTML骨架。我们新建子模板index.html的主要工作就是继承base.html然后填充/覆盖其内部的blocks

{% extends "base.html" %}

<!--用新内容完全覆盖了父模板内容-->
{% block title %}
    index页面
{% endblock %}


{% block sidebar %}
    <!--该变量会将父模板中sidebar中原来的内容继承过来,然后我们可以在此基础上新增,否则就是纯粹地覆盖-->
    {{ block.super }}

    <!--在继承父模板内容的基础上新增的标签-->
    <a href="#" class="list-group-item">拍卖</a>
    <a href="#" class="list-group-item">金融</a>
{% endblock %}

{% block content %}
    <!--用新内容完全覆盖了父模板内容-->
    <p>index页面内容</p>
{% endblock %}

注意事项:

1. 标签extends必须放在行首, base.html中block越多可定制性越强.

2. include 仅仅只是完全引用其他模板文件, 而extends却可以搭配block在引用的基础上进行扩展

3. 变量{{block.super}} 可以重用弗雷德内容, 然后再父类基础上增加新的内容, 而不是完全覆盖

4. 为了提升可读性, 我们可以给标签{% endblock %}奇异果名字

        例如: {block conent %}...  {% endblock  conent%}

5. 在一个模板中,不能出现重复的名字

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 模板的导入与继承 的相关文章

随机推荐

  • 第J2周:ResNet50V2算法实战与解析

    一 课题背景和开发环境 第J2周 ResNet50V2算法实战与解析 语言 Python3 Pytorch 本周任务 1 请根据本文TensorFlow代码 编写出相应的Pytorch代码 建议使用上周的数据测试一下模型是否构建正确 2 了
  • pytorch 中的torchsummary

    torchsummary torchsummary能够查看模型的输入和输出的形状 可以更加清楚地输出模型的结构 torchsummary summary model input size batch size 1 device cuda 功
  • 深度学习与计算机视觉系列(中)--GAN

    深度学习与计算机视觉入门系列 中 数据嗨客最近发布了一个深度学习系列 觉得还不错 主要对深度学习与计算机视觉相关内容做了系统的介绍 看了一遍 在这里做一下笔记 目录 深度学习与计算机视觉入门系列 中 目录 深度学习第6期 循环神经网络RNN
  • SpringCloud Alibaba应用

    目录 1 服务注册中心 1 1 nacos服务注册与发现 1 1 1 springcloud集成nacos服务注册中心 2 服务配置中心 2 1 nacos服务配置中心 3 远程调用 3 1 openfeign远程调用 4 网关服务 4 1
  • 手把手教你制作Jlink-OB调试器(含原理图、PCB、外壳、固件)

    文章目录 前言 硬件电路 原理图 PCB 焊接调试 待优化和改进的地方 资料下载 历史精选 前言 好久没更新博客和公众号了 感谢大家还没取关哈 好吧 我承认是我太懒了 今天分享一个福利 趁着前段时间嘉立创和捷配打价格战 一天之内 多次降价
  • pycharm 允许并行运行 运行多个文件 运行多个py文件

    pycharm 允许并行运行 运行多个文件 运行多个py文件
  • vue3.x + vite4.3构建属于自己的组件库并发布npm包

    欢迎点击领取 前端面试题进阶指南 前端登顶之巅 最全面的前端知识点梳理总结 分享一个使用比较久的 在国内的项目研发过程中 使用vue框架的项目占比很大 同样延伸出了很多非常优秀的UI组件库 比如element plus ant design
  • GPT自然语言处理模型

    GPT Generative Pre trained Transformer 是一种基于Transformer架构的自然语言处理模型 由OpenAI开发 它是目前最先进的自然语言处理模型之一 可以用于各种任务 例如文本生成 机器翻译 问答系
  • JS+CSS实现一个底部渐变波浪效果

    今天又来分享一个网页特效 自己瞎写的 类似一个波浪效果 并且有背景渐变 就叫做底部渐变波浪把 先看看效果图 实现代码 实现原理也很简单 就是使用 keyframes定义动画函数 然后对每个元素应用animation属性 设置不同的延迟播放时
  • matlab 读取某一文件夹下的文件

    MATLAB 是一个十分强大的科学计算软件 用于各种数据分析和科学计算 在实际工作和研究过程中 我们通常将数据存储在文件中 文件存在于系统的某个目录中 如果需要读取这些文件 可以使用 MATLAB 提供的文件和文件夹操作函数 本文将介绍如何
  • 一、Java基础之一——环境配置

    文章目录 1 1 JavaSE知识体系 1 2 各种语言的应用领域 1 3 Java语言跨平台原理 1 3 1Java语言特点 1 3 2 Java语言跨平台原理 1 3 3 JRE和JDK 1 4 Java环境配置 1 4 1 JDK下载
  • C#——设计一个Windows应用程序,在该程序中定义一个学生类和班级类

    设计一个Windows应用程序 在该程序中定义一个学生类和班级类 以处理每个学生的学号 姓名 语文 数学和英语3门课程的期末考试成绩 要求 1 能根据姓名查询指定学生的总成绩 2 能统计全班学生的平均成绩 3 能统计单科成绩最高分 4 能统
  • Unity处决动画实现思路

    前言 不只是处决动画 只要是需要多个动画目标配合的都可以参考下面的思路 方案一 去除掉动画的位移部分 xz 在合适的时机移动到固定的位置双方同时播放动画 比如实现下图中狼和鹿的捕猎动画 我的做法是在要开始播放处决动画之前先让狼位移到固定位置
  • 卷积相关知识

    二维图片卷积 二维卷积可以处理二维数据 nn Conv2d self in channels out channels kernel size stride 1 padding 0 dilation 1 groups 1 bias True
  • 树莓派安装教程

    1 安装raspbian操作系统 下载安装工具 Win32DiskImager 0 9 5 binary 下载 img文件 使用上述工具即可 下载前首先需要格式化SD卡 再重新写入 之后插入SD卡 即可可以看到操作系统的界面 关于解决显示屏
  • 浅记封装的antd组件: 树形下拉选择

    树形下拉选择 1 可输入搜索 2 可设置单选多选 3 父节点选择后 可以设置子节点全选 import React from react import connect from dva import TreeSelect Form from
  • NeuPhysics: Editable Neural Geometry and Physics from Monocular Videos 解读

    1 论文简介 1 将NeRF和SDF方法结合来更好的回归物体表面 mesh 2 通过在神经辐射场后嵌入可微模拟器 实现动力学参数学习和进行场景编辑 2 核心思想 上述论文包含三个模块 1 Time invariant information
  • matlab生成dll

    实验室的一个项目需要调用matlab程序 经过再三考虑 决定使用vc调用matlab导出库的形式 而我主要负责与matlab程序结合的工作 以下是今天工作的简要总结 全当是个备忘吧 1 在matlab中选择compiler 在命令行窗口输入
  • 中国科学信息科学latex模板编译报错的解决办法

    中国科学 信息科学 latex模板编译不通过解决办法 1 前言 本文的解决办法不需要重新下载ctex 只需要添加两个文件即可 主要参考了下面的这篇文章如果你想知道为什么要这么改 强烈推荐阅读这篇博客 编译 CCT 模板 stone zeng
  • Django 模板的导入与继承

    目录 模板的导入和继承 1 模板的导入之include标签 2 模板的继承 派生之extendds标签 block标签 模板的导入和继承 在实际开发中 模板文件彼此之间可能会有大量冗余代码 为此django提供了专门的语法来解决这个问题 主