8-模板复用

news2024/12/23 12:03:37

一. 模板复用方法和前置条件

1. 语法:

 {% block 名字 %}{% endblock %}

2. 三种方法:

    (1). 模板继承 *
    (2). include
    (3). 宏

3. 前置条件:

    (1). 多个模板具有相同的顶部和底部
    (2). 多个模板具有相同的模板内容,但是内容中部分不一样
    (3). 多个模板具有完全相同的模板内

二. 模板复用的方法

     1. 模板继承

# 1. 定义公共模板
# 2. 页面模板继承公共模板

# 步骤:
# 1. 公共模板:
'''
    (1). 定义一个base.html的模板
    (2). 分析模板中那些是变化的,对变化的部分用block进行"预留位置"也称作:挖坑
'''
            {% block title %}公共模板的title{% endblock %}
'''      
    (3). 注意: 样式和脚本,需要提前预留
'''
            {% block mycss %}{% endblock %}
            {% block myjs %}{% endblock %}
 


# 2. 页面模板使用公共模板:
'''
    (1). 将公共模板继承过来
'''
            {% extends '公共模板名称' %}
'''
    (2). 找到对应的block(坑)填充,每一个block都是有名字的
'''
            {% block title %}首页{% endblock %}
 
# 3. 外部样式的加载
            {{ url_for('static',filename='css/style.css') }}
 

       

 2. include

# include : 包含; 会把公共模板内所有东西都带上

# 在A,B,C页面都有共同的部分,但是其他页面没有这部分,这个时候考虑使用include;

# 公共模板可以只写标签语法(把默认html标签去除)

       <div style="height:50px; background-color:deeppink"></div>

# 步骤:
    1. 先定义一个公共的模板: xxx.html

    2. 谁使用则include过来
        {% include '文件夹/xxx.html' %}

 

3. 宏

# 宏: macro
    1. 把它看作是jinja2的一个函数,这个函数可以返回一个HTML字符串
    2. 目的: 代码可以复用,避免代码冗余
 
# 定义两种方式:
  1. 在模板中直接定义
  2. 将所有的宏提取到一个模板中:macro.html
      谁想使用谁导入即可
      {% import 'mac.html' as xxx %}
      {{ xxx.宏名字(参数) }}

  (1) 定义宏(base.html)

{# 定义宏,有默认值其他模板传入的值不生效 #}
{% macro form(action,value="登录",method="post") %}
    <form action="{{ action }}" method="{{ method }}">                  
        <input type="text" placeholder="用户名" name="username">           
        <br>                                                            
        <input type="password" placeholder="密码" name="password">        
        <br>                                                            
        <input type="submit" value="{{ value }}">
    </form>                                                             
                                                                        
{% endmacro %}
 
{# 内部调用宏(相当于执行函数) #}
{{ form("/show") }}

(2) 调用宏(show.html)


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

{# 外部调用宏 #}
{% import 'base.html' as func %}
{{ func.form("/show",value="注册") }}

</body>
</html>

(3)视图函数(app.py)

from flask import Flask, render_template, request

import settings

app = Flask(__name__)
app.config.from_object(settings)  # 加载配置文件




@app.route("/show",methods=["GET", "POST"])
def show():
    if request.method=="GET":
        return render_template("base.html")
    return "注册成功"


if __name__ == '__main__':
    app.run(port=8080)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/913787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MAYA粒子基础_发射器和粒子碰撞

创建nParticle泛向发射器 创建nParticle方向发射器 体积发射器 创建火花 曲面发射器 曲线发射 粒子碰撞 碰撞层 碰撞 碰撞层都是0 不碰撞 白0 红1 1 0

关于ros工作空间devel下setup.bash的理解

在创建了ros的工作空间之后 在工作空间的devel文件夹中存在几个setup.*sh形式的环境变量设置脚本 使用source命令运行这些脚本文件&#xff0c;则工作空间的环境变量设置可以生效&#xff08;如可以找到该工作空间内的项目&#xff09;。 source devel/setup.bash 设置环境变量…

为什么 Redis 中的事物很玄学,没人使用 ?

1.为什么不使用 Redis 中的事物 ? Redis 中的事物是 "弱事物"&#xff0c;它在操作的时候&#xff0c;是将多个命令全部加入到事物队列中&#xff0c;然后通过 exec 命令一次性执行所有命令。这样做的好处是可以减少网络往返的次数&#xff0c;提高效率。 它的使用…

Hadoop学习一(初识大数据)

目录 一 什么是大数据&#xff1f; 二 大数据特征 三 分布式计算 四 Hadoop是什么? 五 Hadoop发展及版本 六 为什么要使用Hadoop 七 Hadoop vs. RDBMS 八 Hadoop生态圈 九 Hadoop架构 一 什么是大数据&#xff1f; 大数据是指无法在一定时间内用常规软件工具对其内…

allegro gerber导出

allegro gerber导出 1、生产钻孔数据nc_param.txt钻孔参数文件生成2、生成钻孔图形3、放置钻孔图和钻孔表4、生产钻孔文件5、路板中使用了椭圆孔、矩形或者长条形的开槽孔&#xff0c;就需要出一个铣刀数据文件&#xff0c;单独生成NC Route文件&#xff1b;6、生成叠层截面图7…

森林生物量(蓄积量)估算全流程

python森林生物量&#xff08;蓄积量&#xff09;估算全流程 一.哨兵2号获取/去云处理/提取参数1.1 影像处理与下载1.2 导入2A级产品1.3导入我们在第1步生成的云掩膜文件1.4.SNAP掩膜操作1.5采用gdal计算各类植被指数1.6 纹理特征参数提取 二.哨兵1号获取/处理/提取数据2.1 纹理…

5G NR:协议 - PDCCH信道

1、基本概念 不同于LTE中的控制信道包括PCFICH、PHICH和PDCCH&#xff0c;在5G NR中&#xff0c;控制信道仅包括PDCCH&#xff08;Physical Downlink Control Channel&#xff09;&#xff0c;负责物理层各种关键控制信息的传递&#xff0c;PDCCH中传递的下行控制信息&#xff…

rainbond云原生应用管理平台部署

rainbond简介 rainbond 是 一个 开源的Kubernetes 云原生应用管理平台。 Rainbond 核心100%开源&#xff0c;Serverless体验&#xff0c;不需要懂K8s也能轻松管理容器化应用&#xff0c;平滑无缝过渡到K8s&#xff0c;是国内首个支持国产化信创、适合私有部署的一体化应用管理…

股票开户哪个券商进行炒股佣金最低手续费最低?万1融5!

股票交易的手续费最低金额取决于券商、地区、交易所以及具体的交易类型等因素。不同券商和地区的手续费政策会有所不同&#xff0c;因此无法给出一个通用的最低手续费金额。 一些券商可能会提供特定的交易活动或优惠&#xff0c;例如首次交易免费、低交易费等。此外&#xff0…

linux设备驱动模型:设备树

设备树诞生背景&#xff1a;硬件设备中种类逐年递增&#xff0c;板级platform平台设备文件越来越多。 设备树由根节点开始&#xff0c;可以包含若干个子节点&#xff1b;每个子节点又可以包含若干个子节点。 DTS&#xff08;device tree source&#xff09;&#xff1a;设备树…

人力资源管理难?看看这些大厂是怎么做的!附数据分析模板

组织管理的质量是影响企业运作效率的重要因素之一。今天&#xff0c;本文分享帆软自己是如何用简道云搭建HR系统的。 Tips&#xff1a;本文中的“同学”&#xff0c;是对帆软员工的称呼。本文由帆软人事同学提供。 最初&#xff0c;在帆软的快速成长期&#xff0c;公司聚焦发展…

景区气象站丨它的结构与功能是什么样的?

景区气象站是由传感器、数据采集系统、LED显示屏、供电系统、立杆和监控主机组成&#xff0c;能够同时监测大气温度、湿度、大气压、风速、风向、pm2.5 /pm10、二氧化碳、光照强度等气象参数&#xff0c;并将这些气象参数上传至环境监控平台&#xff0c;具有数据传输快、无需布…

excel中两列数据生成折线图

WPS中excel的两列数据&#xff0c;第一列为x轴&#xff0c;第二列为y轴&#xff0c;生成折线图&#xff0c;并生成拟合函数。 1.选中两列数据&#xff0c;右击选择插入图表&#xff0c;选择XY&#xff08;散点图&#xff09;&#xff0c;生成散点折线图 2.选中图中散点&#x…

高压功率放大器在损伤检测中的应用有哪些

损伤检测技术是一种基于材料力学和声学原理的非破坏性检测技术。它通过对材料内部声波传播的特征进行分析&#xff0c;来判断材料内部是否存在缺陷、裂纹等损伤。在损伤检测技术中&#xff0c;高压功率放大器作为信号源和信号放大器&#xff0c;发挥着重要的作用。下面&#xf…

【Linux】实现进度条的两种方式(C语言实现)

文章目录 前言一、简单写法1.processbar.h2. processbar.c3.main.c 二、使用回调函数1.processbar.h2. processbar.c3.main.c 前言 回车&#xff08;\r&#xff09;&#xff1a;让光标回到当前行的最左端 换行&#xff08;\n&#xff09;&#xff1a;让光标回到下一行的最左端&…

Camunda 7.x 系列【24】脚本任务

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 概述2. 脚本3. 案例演示3.1 建模3.2 测试1. 概述 Script Task脚本任务是一个自动化的活…

SpringBoot - 两种方式刷新配置信息

一、第一种方式 ​ConfigurationProperties​不能自动刷新&#xff0c;需要手动调用contextRefresher.refresh()方法来刷新配置。 import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;Component…

pytorch里面的nn.AdaptiveAvgPool2d

今天遇到nn.AdaptiveAvgPool2d((None, 1)) AdaptiveAvgPool2d函数详细解释&#xff1a; 2D自适应平均池化&#xff08;2D adaptive average pooling&#xff09;是一种对输入信号进行二维平均池化的操作&#xff0c;输入信号由多个输入平面&#xff08;input planes&#xff0…

MAC 查看被占用的端口

今天启动一个一个服务的时候&#xff0c;总是报端口被占用的错误&#xff0c;所以就需要找一下是哪个程序占用了端口&#xff0c;查看的命令是&#xff1a; netstat -anp tcp -v | grep 8082那这个命令出来的那个是进程id呢&#xff0c;很显然我画框的就是了&#xff0c;前面的…

「Python|音视频处理|环境准备」如何在Windows系统下安装并配置音视频处理工具FFmpeg

本文主要介绍如何在Windows系统下安装并配置音视频处理工具FFmpeg&#xff0c;方便使用python进行音视频相关的下载或编辑处理。 文章目录 一、下载软件二、解压并配置三、验证安装 一、下载软件 首先要去 ffmpeg官网 下载软件包 由于上面直接下载的按钮是.tar.xz格式的。为了…