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中的JSON使用
Apr 28 Python
使用Python的内建模块collections的教程
Apr 28 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
Nov 02 Python
python实现微信跳一跳辅助工具步骤详解
Jan 04 Python
解决python "No module named pip" 的问题
Oct 13 Python
python3 爬取图片的实例代码
Nov 06 Python
tensorflow使用range_input_producer多线程读取数据实例
Jan 20 Python
Python Selenium安装及环境配置的实现
Mar 17 Python
python中wx模块的具体使用方法
May 15 Python
python 如何将office文件转换为PDF
Sep 22 Python
python 元组和列表的区别
Dec 30 Python
Python Http请求json解析库用法解析
Nov 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
星际流派综述
2020/03/04 星际争霸
PHP多线程批量采集下载美女图片的实现代码(续)
2013/06/03 PHP
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
实现PHP多线程异步请求的3种方法
2014/01/17 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
laravel实现查询最后执行的一条sql语句的方法
2019/10/09 PHP
学习jquery之一
2007/04/27 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
使用Vue实现一个树组件的示例
2020/11/06 Javascript
简单谈谈Python中函数的可变参数
2016/09/02 Python
Python循环语句中else的用法总结
2016/09/11 Python
matplotlib作图添加表格实例代码
2018/01/23 Python
详解Python自建logging模块
2018/01/29 Python
对Python中type打开文件的方式介绍
2018/04/28 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
基于pytorch 预训练的词向量用法详解
2020/01/06 Python
Python文件操作及内置函数flush原理解析
2020/10/13 Python
编程实现当输入某产品代码则打印出该产品记录的功能
2014/05/03 面试题
个人实习生的自我评价
2014/02/16 职场文书
企业员工培训感言
2014/02/26 职场文书
二年级小学生评语
2014/04/21 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
利用Pycharm连接服务器的全过程记录
2021/07/01 Python
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL