接上文

模板继承

Jinji2中的模板继承是jinjia2比较强大的功能之一。

模板继承可以定义一个父级公共的模板,把同一类的模板框架定义出来共享。

这样做一方面可以提取共享代码,减少代码冗余和重复的工作量

另一方面,对于后期的维护和管理也非常方便。

一个根模板(或叫基模板)主要有三部分组成:

一是公共的js,css等资源文件的引用,

二是定义好一个布局框架,

三是定义子模板可以重写的部分(block)

下面我们以一个例子来说明模板继承的使用方法

1. 创建一个基模板

选中templates文件夹,右键选择新建->HTML文件

在弹出的窗口中输入要创建的文件名:base.html,

点击确定

然后把下面的代码copy到base.html中

<!DOCTYPE PUBLIC >
<>
<>
<><{{ (,=) }}/>{% %}<>{% %}{% %} - My Webpage</>{% %}
</>
<><>{% %}{% %}</><>{% %}Copyright 2018{% %}</>
</>

在这个基模板中,可以看到定义了4个block,每个个block就是告诉子模板,可以重写这些block中的内容

在同一个模板中不能定义同名的block

注意在static文件夹中添加style.css文件:

Style.css文件中只有一行代码:

{:;
}

2. 创建一个子模板

用同样的方法在template下面创建一个sub.html文件,代码如下

{% %}
{% %}Index{% %}
{% %}{{ () }}<>.{ : ; }</>
{% %}
{% %}<>Index</><>Welcome on my awesome homepage.</>
{% %}

可以看到这个子模板用extends方法继承了base.html模板,然后又重写了 title, head, content三个block中的内容

一个模板中不能出现重复名称的block块

其中的supper()用来调用父级模板中的block块内容,在本例中,supper()会把父级的head块内容写到子模板中

3. 定义route

在code.py文件中添加sub.html的route定义

@app.route()
renderSub():render_template()

运行效果

如果想多次调用一个block块,可以使用self.block块名称进行调用,比如,我们把<h1>Index</h1>这里替换成<h1>{{self.title()}}</h1>

运行效果:

本文源码地址:链接:https://pan.baidu.com/s/1eLtPlL4wyV4tu6TJCzj2rw 密码:dpo2

转载于:https://blog.51cto.com/12482328/2083222

flask中jinjia2模板引擎的使用详解3相关推荐

  1. flask中jinjia2模板引擎详解3

    接上文 模板继承 Jinji2中的模板继承是jinjia2比较强大的功能之一. 模板继承可以定义一个父级公共的模板,把同一类的模板框架定义出来共享. 这样做一方面可以提取共享代码,减少代码冗余和重复的 ...

  2. flask中jinjia2模板引擎使用详解5

    接上文 宏 可以理解为函数,即把一些常用的模板片段做好封装,以便于重用,减少工作量和维护难度. 宏的定义很简单: {%macro xxx()%} ##这里写内容 {%endmacro%} 下面引用官方 ...

  3. spring boot模板引擎thymleaf用法详解

    spring boot模板引擎thymleaf用法详解 Spring-boot支持FreeMarker.Thymeleaf.jsp.veocity 但是对freemarker和thymeleaf的支持 ...

  4. Javascript模板引擎mustache.js详解

    进阶之路在于日积月累, 每天进步一点点-加油~ mustache.js是一个简单强大的Javascript模板引擎,使用它可以简化在js代码中的html编写,压缩后只有9KB,非常值得在项目中使用. ...

  5. php模板缓存_Smarty模板引擎缓存机制详解

    本文实例讲述了Smarty模板引擎缓存机制.分享给大家供大家参考,具体如下: 首先说下smarty缓存和编译,这是两个不同的概念,编译默认情况下是启动的,而缓存机制需要人为开启,smarty编译过的文 ...

  6. python web开发-flask中response,cookies,session对象使用详解

    Response响应对象: 当一个web请求被服务器处理完后,会返回用户请求的响应,这时候就要用到响应对象,根据响应给用户的形式不同,响应对象有以下几种处理方式 如果返回的是一个合法的响应对象,它会从 ...

  7. Jinjia2模板引擎学习笔记

    Jinjia2 模板引擎 形式最简单的Jinjia2模板引擎就是一个包含响应文本的文件. 1渲染模板 默认情况下,flask在应用中的templates子目录里面寻找模板. flask提供的rende ...

  8. Node 03--在Node中使用模板引擎进行渲染

    使用readdir获取指定路径下的所有文件名 文件结构 实现代码 const fs = require('fs');fs.readdir('G:/pink_code/Node_Study/02',(e ...

  9. ThinkPHP6 模板引擎普通标签中,模板引擎运算符函数,循环标签,判断标签的使用,及一些特殊标签

    ThinkPHP6 模板引擎普通标签中,模板引擎运算符函数,循环标签,判断标签的使用,及一些特殊标签 模板引擎支持普通标签和XML标签方式两种标签定义,分别用于不同的目的: 标签类型 描述 普通标签 ...

  10. yii mysql 事务处理_Yii2中事务的使用实例代码详解

    前言 一般我们做业务逻辑,都不会仅仅关联一个数据表,所以,会面临事务问题. 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全 ...

最新文章

  1. hive 中文comment乱码解决
  2. 突然Windows系统声音没有,怎么修复?
  3. Bootstrap 表单控件一(单行输入框input,下拉选择框select ,文本域textarea)
  4. mac navicat premium 使用技巧
  5. leetcode221 Maximal Square
  6. postgreSql 常用操作总结
  7. UIAlertView UIActionSheet随笔笔记
  8. beta:scrum5
  9. Photoshop修复和合成梦幻人物
  10. TikTok欧洲首个数据中心将建在爱尔兰 投资5亿美元
  11. Google Chrome 谷歌浏览器历史版本下载
  12. 安全测试简历项目经验怎么写?
  13. 开启微信悬浮窗权限有什么用_这个功能比微信自带的还好用
  14. 老牌安全公司CYBER ARK眼中的RPA部署安全问题
  15. 网易云音乐登录信息加密算法详解
  16. C语言写一个猜数字游戏?我只想玩王者荣耀
  17. java-net-php-python-jsp网上拍卖系统计算机毕业设计程序
  18. Hadoop文件系统
  19. 有道词典_每日一句_2019/09
  20. 智子观测宣布和数榜签约合作,强化大数据采集技术

热门文章

  1. spring mvc 404 报错记录
  2. day26 SQL注入神器—— Sqlmap
  3. 最近心血来潮,准备更新博客
  4. 【mysql】批量更新数据
  5. 倒序输出数组 (彩蛋:抖机灵)
  6. 用什么软件免费查重呢?4款比较靠谱的论文查重软件值得一试
  7. U盘插上,系统有反应,但是却不识别,电脑能识别其他的U盘,U盘在其他电脑也是好用的经验分享(驱动问题)
  8. 图像处理入门系列之对比度增强
  9. Vijos P1234 口袋的天空
  10. 用C语言程序进行比赛日程排列