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中变量交换的例子
Aug 25 Python
python使用线程封装的一个简单定时器类实例
May 16 Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
scrapy爬虫完整实例
Jan 25 Python
pandas创建新Dataframe并添加多行的实例
Apr 08 Python
实例讲解Python中整数的最大值输出
Mar 17 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
Feb 26 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
Feb 27 Python
Python文件读写w+和r+区别解析
Mar 26 Python
判断Threading.start新线程是否执行完毕的实例
May 02 Python
K近邻法(KNN)相关知识总结以及如何用python实现
Jan 28 Python
用Python将GIF动图分解成多张静态图片
Jun 11 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 空格,换行,跳格使用说明
2009/12/18 PHP
php程序效率优化的一些策略小结
2010/07/17 PHP
php的POSIX 函数以及进程测试的深入分析
2013/06/03 PHP
php学习笔记之面向对象
2014/11/08 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
关于Blog顶部的滚动导航条代码
2006/09/25 Javascript
慎用 somefunction.prototype 分析
2009/06/02 Javascript
javascript 写类方式之九
2009/07/05 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
2012/12/23 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
js中document.write的那点事
2014/12/12 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
2015/03/30 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
微信小程序 wxapp视图容器 view详解
2016/10/31 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
vue-quill-editor富文本编辑器简单使用方法
2018/09/21 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
[48:21]林俊杰圣堂刺客超神杀戮秀
2014/10/29 DOTA
Python读写Redis数据库操作示例
2014/03/18 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
python去除文件中重复的行实例
2018/06/29 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
2018/09/02 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
中兴通讯全球官方网站:ZTE
2020/12/26 全球购物
生产主管岗位职责
2013/11/10 职场文书
激励口号大全
2014/06/17 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
董事会决议范本
2015/07/01 职场文书