接上文

模板继承

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

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

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

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

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

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

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

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

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

1. 创建一个基模板

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

flask中jinjia2模板引擎的使用详解3_Python

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

flask中jinjia2模板引擎的使用详解3_编程语言_02

点击确定

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

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

flask中jinjia2模板引擎的使用详解3_编程语言_03

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

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

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

flask中jinjia2模板引擎的使用详解3_编程语言_04

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

{
     :;
}

flask中jinjia2模板引擎的使用详解3_编程语言_05

2. 创建一个子模板

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

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

flask中jinjia2模板引擎的使用详解3_编程语言_06

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

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

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

3. 定义route

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

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

flask中jinjia2模板引擎的使用详解3_Python_07

运行效果

flask中jinjia2模板引擎的使用详解3_Python_08

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

flask中jinjia2模板引擎的使用详解3_Python_09

运行效果:

flask中jinjia2模板引擎的使用详解3_Python_10


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