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自动化工具日志查询分析脚本代码实现
Nov 26 Python
浅析Python中的多进程与多线程的使用
Apr 07 Python
Python对CSV、Excel、txt、dat文件的处理
Sep 18 Python
Windows下Anaconda2安装NLTK教程
Sep 19 Python
python提取log文件内容并画出图表
Jul 08 Python
使用PyOpenGL绘制三维坐标系实例
Dec 24 Python
tensorflow使用指定gpu的方法
Feb 04 Python
解决django中form表单设置action后无法回到原页面的问题
Mar 13 Python
python实现ftp文件传输系统(案例分析)
Mar 20 Python
浅谈在JupyterNotebook下导入自己的模块的问题
Apr 16 Python
Python爬取某拍短视频
Jun 11 Python
Python干货实战之八音符酱小游戏全过程详解
Oct 24 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
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
2016/07/18 PHP
JavaScript控制Session操作方法
2013/01/17 Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
2013/11/21 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
2017/03/08 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
详解一个基于套接字实现长连接的express
2019/03/28 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
在RedHat系Linux上部署Python的Celery框架的教程
2015/04/07 Python
给你选择Python语言实现机器学习算法的三大理由
2017/11/15 Python
python 图片去噪的方法示例
2019/07/09 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
微软新西兰官方网站:Microsoft New Zealand
2018/08/17 全球购物
结构和类有什么异同
2012/07/16 面试题
教师现实表现材料
2014/02/14 职场文书
《锄禾》教学反思
2014/04/08 职场文书
简单租房协议书范本
2014/08/20 职场文书
银行竞聘报告范文
2014/11/06 职场文书
家长高考寄语
2015/02/27 职场文书
工作能力自我评价2015
2015/03/05 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
主持人开场白台词
2015/05/29 职场文书
2016天猫双十一广告语
2016/01/28 职场文书
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL
Python 中面向接口编程
2022/05/20 Python