美文网首页
Flask模板继承

Flask模板继承

作者: LoveLinXue | 来源:发表于2018-11-13 22:57 被阅读23次

关于继承,都是面向对象的三大特征中的其中一种,所以如果有别的面向对象语言基础,关于继承个概念,也不用多讲.Flask中的模板可以继承,通过继承可以把模板中许多重复出现的元素抽取出来,放在父模板中,并且父模板通过定义block给子模板开一个口,子模板根据需要,再实现这个block.
比如我写一个父类模板

<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="base.css" />
<title>{% block title %}{% endblock %}</title>
{% block head %}{% endblock %}
</head>
<body>
<div id="body">{% block body %}{% endblock %}</div>
<div id="footer">
{% block footer %}
&copy; Copyright 2008 by <a href="http://domain.invalid/">you</a>
{% endblock %}
</div>
</body>
</html>

以上父模板中,抽取了所有模板都需要用到的元素html、body等,并且对于一些所有模板都要用到的样式文件style.css也进行了抽取,同时对于一些子模板需要重写的地方,比如title、head、body都定义成了block,然后子模板可以根据自己的需要,再具体的实现。以下再来看子模板的代码:

{% extends "base.html" %}
{% block title %}首页{% endblock %}
{% block head %}
{{ super() }}
<style type="text/css">
.detail{
color: red;
}
</style>
{% endblock %}
{% block content %}
<h1>这里是首页</h1>
<p class="detail">
首页的内容
</p>
{% endblock %}

首先第一行就定义了子模板继承的父模板,并且可以看到子模板实现了title这个block,并填充了自己的内容,再看head这个block,里面调用了super()这个函数,这个函数的目的是执行父模板中的代码,把父模板中的内容添加到子模板中,如果没有这一句,则父模板中处在head这个block中的代码将会被子模板中的代码给覆盖掉。

另外,模板中不能出现重名的block,如果一个地方需要用到另外一个block中的内容,可以使用self.blockname的方式进行引用,比如以下:

<title>
{% block title %}
这是标题
{% endblock %}
</title>
<h1>{{ self.title() }}</h1>

以上示例中h1标签重用了title这个block中的内容,子模板实现了title这个block,h1标签也能拥有这个值。

另外,在子模板中,所有的文本标签和代码都要添加到从父模板中继承的block中。否则,这些文本和标签将不会被渲染。

相关文章

  • 2.8 jinja2 模板继承

    模板继承 Flask中的模板可以继承,通过继承可以把模板中许多重复出现的元素抽取出来,放在父模板中,并且父模板通过...

  • Flask系列教程(12)——模板继承

    模版继承 Flask中的模板可以继承,通过继承可以把模板中许多重复出现的元素抽取出来,放在父模板中,并且父模板通过...

  • Flask模板继承

    关于继承,都是面向对象的三大特征中的其中一种,所以如果有别的面向对象语言基础,关于继承个概念,也不用多讲.Flas...

  • Flask——模板继承

    在模板中,可能会遇到以下情况: 多个模板具有完全相同的顶部和底部内容 多个模板中具有相同的模板代码内容,但是内容中...

  • flask模板继承

    模板继承笔记: 为什么需要模板继承: 模板继承可以把一些公用代码单独抽取出来放到一个父模板中,以后子模版直接继承就...

  • Flask框架——蓝图、flask-script

    在上篇文章我们学习了Flask框架——模板复用(继承、包含、宏),这篇文章我们来学习Flask框架——蓝图、命令行...

  • flask-模板的继承

    一、继承的实现 二、目录结构和代码 app.py 公共部分--base.html 继承页面:首页-index.ht...

  • (三) flask表单

    flask表单 一. 原生的表单 (1) 先添加一个login的模板(继承自'bootstarp/base.htm...

  • Flask jinja2模板

    Python Flask JIJIA2模板渲染 A.Flask渲染Jinja2模板和模板传参 如何渲染模板:Fla...

  • Flask---迁移数据库实例以及步骤讲解

    #从flask中导入Flask 实例化flask对象 渲染模板from flaskimport Flask,ren...

网友评论

      本文标题:Flask模板继承

      本文链接:https://www.haomeiwen.com/subject/pohrfqtx.html