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 相关文章推荐
pyqt4教程之实现半透明的天气预报界面示例
Mar 02 Python
Python正则表达式使用经典实例
Jun 21 Python
python3 模拟登录v2ex实例讲解
Jul 13 Python
Python实现读写INI配置文件的方法示例
Jun 09 Python
python 3.7.0 下pillow安装方法
Aug 27 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
Sep 06 Python
django模型动态修改参数,增加 filter 字段的方式
Mar 16 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
May 26 Python
python实现猜数游戏(保存游戏记录)
Jun 22 Python
Python如何读取、写入CSV数据
Jul 28 Python
Python3压缩和解压缩实现代码
Mar 01 Python
FP-growth算法发现频繁项集——发现频繁项集
Jun 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
PHP4实际应用经验篇(4)
2006/10/09 PHP
thinkphp配置连接数据库技巧
2014/12/02 PHP
php 多文件上传的实现实例
2016/10/23 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
jquery实现保存已选用户
2014/07/21 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
vue移动端监听滚动条高度的实现方法
2018/09/03 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
js中Function引用类型常见有用的方法和属性详解
2019/12/11 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
2020/08/04 Javascript
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
[37:37]DAC2018 4.4 淘汰赛 Optic vs Mineski 第二场
2018/04/05 DOTA
Python开发的实用计算器完整实例
2017/05/10 Python
Python实现一个服务器监听多个客户端请求
2018/04/12 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
2019/09/05 Python
python  logging日志打印过程解析
2019/10/22 Python
如何将json数据转换为python数据
2020/09/04 Python
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
Nike瑞士官网:Nike CH
2021/01/18 全球购物
个人自荐信
2013/12/05 职场文书
文明倡议书范文
2014/04/15 职场文书
运动会加油稿100字
2014/09/19 职场文书
警察群众路线整改措施
2014/09/26 职场文书
银行委托书范本
2014/09/28 职场文书
禁毒主题班会教案
2015/08/14 职场文书
Django实现翻页的示例代码
2021/05/24 Python
python not运算符的实例用法
2021/06/30 Python
《总之就是很可爱》新作短篇动画《总之就是很可爱~制服~》将于2022年夏天播出
2022/04/07 日漫
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android