Flask中jinja2的继承实现方法及实例


Posted in Python onMarch 03, 2021

在继承的使用上,我们最早接触的是父类和子类的继承。不过Flask框架中的继承要简单一些,只要有一个原文件,便可以对其进行继承和修改的操作了。在修改的内容方面,可以通过关键字来进行实现。下面我们就Flask中jinja2的继承的实现先进行理论的介绍,然后带来实例供大家练习。

1、说明

Jinja2中最强大的部分是模板继承。通过模板继承,我们可以创建一个基本(框架)文件,其他文件可以从中继承,然后再根据需要对其进行修改。

在jinja2的框架文件中,使用block关键字表示它包含的内容可以被修改。

2、实例

<!DOCTYPE html>
<html>
<head>
  {% block head %}
  <link rel="stylesheet" href="style.css" rel="external nofollow" />
  <title>{% block title %}{% endblock %} - My Webpage</title>
  {% endblock %}
</head>
<body>
<div id="content">{% block content %}{% endblock %}</div>
<div id="footer">
  {% block footer %}
  <script>This is javascript code </script>
  {% endblock %}
</div>
</body>
</html>

这里定义了四处 block,即:head,title,content,footer。那怎么进行继承和变量替换呢?注意看下面的文件

{% extend "base.html" %}    # 继承base.html文件
{% block title %} Dachenzi {% endblock %}  # 定制title部分的内容
{% block head %}
{
{ super() }}    # 用于获取原有的信息
<style type='text/css'>
.important { color: #FFFFFF }
</style>
{% endblock %}  
# 其他不修改的原封不同的继承

实例扩展:

jinja2模板继承

父亲:

<!DOCTYPE html>
<html>
<head>
 <title>模板继承</title>
</head>
<body>
 <span>这是基模板</span>
 <div id="content">{% block content %}{% endblock %}</div>
</body>
</html>

用{% block content %}{% endblock %}包含jinja2的字模板块;

子:

<!DOCTYPE html>
<html>
<head>
 <title>模板继承</title>
</head>
<body>
 {% extend "jinja2_模板继承.html"%}
 {% block content %}
 <p class="importtant">我在子模板</p>
</body>
</html>

{% extends "jinja2_模板继承.html"%}标签是这里的关键,告诉模板引擎这个模板继承自另外一个模板。该标签必须是子模板的第一个标签,解释器会自动将父亲的内容复制到子模板中!

结果应该是这样:

<!DOCTYPE html>
<html>
<head>
 <title>模板继承</title>
</head>
<body>
 <span>这是基模板</span>
 <div id="content">
   <p class="importtant">我在子模板</p>
  </div>
</body>
</html>

到此这篇关于Flask中jinja2的继承实现方法及实例的文章就介绍到这了,更多相关Flask中jinja2的继承如何实现内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python结合shell查询google关键词排名的实现代码
Feb 27 Python
python中requests使用代理proxies方法介绍
Oct 25 Python
机器学习10大经典算法详解
Dec 07 Python
Python request设置HTTPS代理代码解析
Feb 12 Python
对Python3之进程池与回调函数的实例详解
Jan 22 Python
详解如何管理多个Python版本和虚拟环境
May 10 Python
Django Serializer HiddenField隐藏字段实例
Mar 31 Python
python同时遍历两个list用法说明
May 02 Python
python3.5的包存放的具体路径
Aug 16 Python
python实现学生信息管理系统(精简版)
Nov 27 Python
Python基于百度API识别并提取图片中文字
Jun 27 Python
详解PyTorch模型保存与加载
Apr 28 Python
基于PyTorch中view的用法说明
Mar 03 #Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
Mar 03 #Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
Mar 03 #Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
Mar 03 #Python
Pytorch 中的optimizer使用说明
Mar 03 #Python
解决pytorch 的state_dict()拷贝问题
Mar 03 #Python
解决pytorch 保存模型遇到的问题
Mar 03 #Python
You might like
下载文件的点击数回填
2006/10/09 PHP
PHP中date()日期函数有关参数整理
2011/07/19 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
PHP购物车类Cart.class.php定义与用法示例
2016/07/20 PHP
thinkphp分页实现效果
2016/10/13 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
PDO::beginTransaction讲解
2019/01/27 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
关于JavaScript中var声明变量作用域的推断
2010/12/16 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
jquery zTree异步加载简单实例讲解
2016/02/25 Javascript
微信端开发--登录小程序步骤
2017/01/11 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
vue学习笔记之vue1.0和vue2.0的区别介绍
2017/05/17 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
Python实现高效求解素数代码实例
2015/06/30 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
Python实现Pig Latin小游戏实例代码
2018/02/02 Python
Python异常处理操作实例详解
2018/08/28 Python
详解Django配置优化方法
2019/11/18 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
《小动物过冬》教学反思
2014/04/17 职场文书
大跃进口号
2014/06/16 职场文书
2015年营销工作总结范文
2015/04/23 职场文书
大学副班长竞选稿
2015/11/21 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis