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 获取本机ip地址的两个方法
Feb 25 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
Jul 02 Python
PyQt5每天必学之进度条效果
Apr 19 Python
pandas.dataframe按行索引表达式选取方法
Oct 30 Python
python调用matlab的m自定义函数方法
Feb 18 Python
如何在Django配置文件里配置session链接
Aug 06 Python
python字典的遍历3种方法详解
Aug 10 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 Python
python中的 zip函数详解及用法举例
Feb 16 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
May 24 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
Jun 10 Python
Django-celery-beat动态添加周期性任务实现过程解析
Nov 26 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
PHP中的串行化变量和序列化对象
2006/09/05 PHP
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
PHP的error_reporting错误级别变量对照表
2014/07/08 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
jQuery中parents()方法用法实例
2015/01/07 Javascript
js获取form的方法
2015/05/06 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
2015/05/28 Javascript
javascript中 try catch用法
2015/08/16 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
2015/11/25 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
2018/05/31 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
js神秘的电报密码 哈弗曼编码实现
2019/09/10 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
Python 实现黑客帝国中的字符雨的示例代码
2020/02/20 Python
python ETL工具 pyetl
2020/06/07 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
电子专业推荐信范文
2013/11/18 职场文书
党的群众路线教育实践活动督导组工作情况汇报
2014/10/28 职场文书
初中成绩单评语
2014/12/29 职场文书
年度考核个人总结
2015/03/06 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
温馨祝福晨语:美丽的一天从我的问候开始
2019/11/28 职场文书
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis
SpringBoot集成MongoDB实现文件上传的步骤
2022/04/18 MongoDB