当前位置: 首页 > news >正文

Jinja2 模板继承机制

1、Jinja2与模板继承的概述

Jinja2Python 常用的模板引擎,广泛用于 FlaskDjango 等 Web 框架,支持变量替换、流程控制、模板继承等功能。

其中,模板继承机制的作用包括:

  • 避免重复写相同结构(比如导航栏、页脚)
  • 实现结构统一、内容可变的网页布局
  • ✅ 提高开发效率、减少维护成本

例如你的网站有多个页面,它们的 <head>、导航栏、页脚都一样,只是中间内容不同。通过模板继承,这些公共部分只需写一次,其它页面只定义各自的主要内容即可。


2、模板继承基本用法

2.1、语法说明

Jinja2 模板继承依赖两个关键语法:

语法说明
{% extends "父模板.html" %}声明当前模板继承哪个模板
{% block 区块名 %}...{% endblock %}定义或覆盖模板中的指定区域

如果你想保留父模板中该区域的原始内容,可以在 block 内部使用{{ super() }}


2.2、父模板示例:_base.html

<!-- templates/_base.html -->
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>{% block title %}默认标题{% endblock %}</title>
</head>
<body><header>导航栏</header><main>{% block content %}默认内容{% endblock %}</main><footer>© 版权所有</footer>
</body>
</html>

说明:

  • titlecontent 是两个“可覆盖区域(block)”。

2.3、子模板示例:index.html

<!-- templates/index.html -->
{% extends "_base.html" %}{% block title %}首页{% endblock %}{% block content %}{{ super() }}<h1>欢迎</h1><p>这是首页内容</p>
{% endblock %}

说明:

  • extends 表示继承 _base.html
  • block title 替换了默认标题
  • block content 添加了自己的内容,同时保留了父模板的默认部分(通过 {{ super() }}
http://www.dtcms.com/a/224742.html

相关文章:

  • Mybatis ORM SpringORM
  • 【代码坏味道】膨胀类 Bloaters
  • Go语言的context
  • 《高等数学》(同济大学·第7版) 第一节《映射与函数》超详细解析
  • 【算法】递归与分治策略
  • Cesium快速入门到精通系列教程一
  • 【Linux】进程地址空间揭秘(初步认识)
  • 【计算机网络】 ARP协议和DNS协议
  • 计算机网络物理层基础练习
  • 【CC协议】知识共享许可协议(Creative Commons Licenses)体系解析
  • Python 中Vector类的格式化实现,重点拆解其超球面坐标系的设计精髓
  • 15分钟讲解所有较知名编程语言
  • DAY 16 numpy数组与shap深入理解
  • GD32F103系列工程模版创建记录
  • js数据类型有哪些?它们有什么区别?
  • 如何找到一条适合自己企业的发展之路?
  • Agent开发详解
  • 【Qt】Bug:findChildren找不到控件
  • 【Python训练营打卡】day40 @浙大疏锦行
  • 机器学习03-色彩空间:RGB、HSV、HLS
  • 图像修复的可视化demo代码
  • atapi!IdeReadWrite函数分析下之Send read command
  • 边缘计算场景下的大模型落地:基于 Cherry Studio 的 DeepSeek-R1-0528 本地部署
  • Linux 下如何查看进程的资源限制信息?
  • 第二十章 文本处理
  • HTML实现端午节主题网站:龙舟争渡,凭吊祭江诵君赋。
  • 光电设计大赛智能车激光对抗方案分享:低成本高效备赛攻略
  • 人工智能在智能健康监测中的创新应用与未来趋势
  • 【Netty系列】消息编码解码框架
  • JS基础知识(第十五天)